jQuery通过调用webservice返回json数据的问题

2023/9/30 18:18:31

由于.net frameword3.5以上添加了对contenttype的检查,当ajax发送请求时,如果设置了contenttype为json,那么请求webservice时,会自动将返回的内容转为json的格式,json的格式iruxia
{"d":"webservice方法返回的字符串内容"}

  这时出现一个问题了,如果方法返回的是一个json格式的字符串,那么如何获得实际的json对象,而不是只有一个属性d的json对象呢?

  其实很简单,我们只需要在success回调函数中eval下jquery通过获取webservice得到的json对象的d属性,就可以获取到实际的json对象了。

  如下,如果方法返回的是 {"msg":"其实我也是json对象的字符串"} 这种信息,我们如何获取到msg这个属性的值呢?

  首先一定要明确的时,调用webservice的方法后实际获取到的json格式的字符串是这样的 {"d":"{\"msg\":\"其实我也是json对象的字符串\"}"} ,jquery通过这个字符串生成的json对象只有一个属性,那就是d,d存储的是webservice方法返回的json格式的字符串信息,而不是json对象,所以不能通过 obj.d.msg来获取msg信息。而是需要 var realobj=eval('('+o.d+')')来生成实际的json对象,然后realobj.msg才是需要的信息。


例子如下
test.asmx


+展开
-C#
using System.Web.Script.Services; 
using System.Web.Services; 
namespace WebService35 

    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService] 
    public class WebService1 : System.Web.Services.WebService 
    {        
        [WebMethod] 
        [ScriptMethod(UseHttpGet = true)] 
        public string method1() 
        { 
            return "非json字符串";//实际返回的json格式的字符串为 {"d":"非json字符串"}
        } 
        [WebMethod] 
        [ScriptMethod(UseHttpGet = true)] 
        public string method2() 
        { 
            return "{\"msg\":\"其实我也是json对象的字符串\"}";  //实际返回的json格式的字符串为 {"d":"{\"msg\":\"其实我也是json对象的字符串\"}"}
        } 
    }
}
+展开
-JavaScript
//调用method1,返回非json格式的字符串,所以不需要eval
$.ajax({ 
  url: "test.asmx/method1", 
  type: "POST", 
  dataType: "json", 
  contentType: "application/json; charset=utf-8", 
  data: "{}", 
  success: function(json){alert(json.d); }, 
  error: function(x, e) {alert(x.responseText); },  //============================
  complete: function(x) {  alert(x.responseText);} 
 });

+展开
-JavaScript
//调用method2,返回json格式的字符串,所以需要eval jquery生成的json对象的d属性来生成实际的json对象
$.ajax({ 
  url: "test.asmx/method2", 
  type: "POST", 
  dataType: "json", 
  contentType: "application/json; charset=utf-8", 
  data: "{}", 
  success: function(json){var realobj=eval('('+josn.d+')');alert(realobj.msg); },  //============================
  error: function(x, e) {alert(x.responseText); }, 
  complete: function(x) {  alert(x.responseText);} 
 });


http://www.jnnr.cn/a/116603.html

相关文章

HAWE节流阀

HAWE节流阀宁波秉圣常作的型号:BC2-0.6G,CQR22-3/8,ED31,ED41,RD21K,RD11等主要用液压系统中。 德国HAWE哈威QV40H12节流阀液压阀阀门仅规定用于液压应用(流体技术)。针对流体技术和电气技术,此阀门要求高安全技术标准和规定。用户须遵守安全…

网络工程毕设项目 40个高质量SSM毕设项目分享【源码+论文】

文章目录前言 题目1 : 基于SSM的毕业设计管理系统 <br /> 题目2 : 基于SSM的病人跟踪治疗信息管理系统 <br /> 题目3 : 基于SSM的大学生兼职跟踪系统 <br /> 题目4 : 基于SSM的大学生企业推荐系统 <br /> 题目5 : 基于SSM的电影院在线售票系统 <br …

【pytorch笔记】第四篇 Transforms使用

1. Transforms用途 ① Transforms当成工具箱的话&#xff0c;里面的class就是不同的工具。例如像totensor、resize这些工具。 ② Transforms拿一些特定格式的图片&#xff0c;经过Transforms里面的工具&#xff0c;获得我们想要的结果。 2. Transforms该如何使用 2.1 trans…

http和https的区别

http和https的区别 1.http采用明文传输&#xff0c;信息不安全&#xff0c;https更安全&#xff0c;需要到CA申请证书&#xff0c;一般免费证书很少&#xff0c;需要交费&#xff0c;Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。 2.端口不同&a…

新型LINUX驱动开发 DTS设备树

1.为什么使用设备树 linux内核3.版本之后才有设备树。 没有设备树之前的板级信息都写在.c文件里面&#xff0c;导致内核臃肿。 因此将板级信息独立成格式&#xff0c;文件名为dts&#xff0c;一个平台对应一个dts。 2.dts dtb dtc dts是设备树源码文件。 dtb是将设备树dt…

Nacos注册中心快速入门

作为公司的一名基础架构组成员&#xff0c;去年年底我做了公司基础设施注册中心的技术选型。偶然翻看去年的选型材料&#xff0c;看到了本篇Nacos注册中心快速入门。如果你作为Nacos的初识者&#xff0c;或者想快速了解Nacos的上手难度&#xff0c;希望本篇可以帮助到你。 1、…

docker底层实现

一、docker架构 Docker 采用了 C/S架构&#xff0c;包括客户端和服务端。 Docker daemon 作为服务端接受来自客户的请求&#xff0c;并处理这些请求&#xff08;创建、运行、分发容器&#xff09;。 客户端和服务端既可以运行在一个机器上&#xff0c;也可通过 socket 或者 RE…

echarts多图联动并闪烁标注

多图联动并闪烁 效果 实现 <!DOCTYPE html> <html lang"zh-CN" style"height: 100%"> <head><meta charset"utf-8"> </head> <body style"height: 100%; margin: 0"><div style"displa…

SpringMVC(二)请求

一、设置请求映射路径 当类上和方法上都添加了 RequestMapping 注解&#xff0c;前端发送请求的时候&#xff0c;要和两个注解的 value 值相加匹配才能访问到Controller //类上方配置的请求映射与方法上面配置的请求映射连接在一起&#xff0c;形成完整的请求映射路径 RequestM…

员工脉搏/脉动调查的5个好处

什么是员工脉搏/脉动调查&#xff0c;为什么越来越多的公司选择定期脉搏调查而不是年度员工敬业度调查&#xff1f; 员工敬业度是全世界各类组织的人力资源团队的首要任务。研究清楚地表明&#xff0c;参与其中的员工意味着生产力的提高&#xff0c;员工流失率的降低&#xff…

【Transformers】第 3 章:Transformers剖析

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

Git基础(21):GitLab创建组、用户、项目

文章目录如何使用GitLabGitLab添加组、创建用户、创建项目创建组group创建项目&#xff0c;查看项目创建用户并设置密码分配权限如何使用GitLab GitLab添加组&#xff0c;创建用户&#xff0c;设置密码&#xff0c;添加项目&#xff0c;分配权限 GitLab添加组、创建用户、创建…

supervisor的用法

supervisor是什么&#xff1a; 守护进程的一个工具&#xff1b;比如PM2、Forever、 Python底层写的supervisor 等等... 用法&#xff1a; 1、安装 我用的是yum安装&#xff0c;还有其他的很多安装方式就不一一介绍&#xff0c;有兴趣的中级查 yum install supervisor2、Supervi…

Eolink是国产API接口管理的无冕之王

一、传统API接口管理的缺陷 1、前言 项目开发我们都知道在一个项目团队中是由很多角色组成&#xff0c;最常见团队的就是前端开发工程师、客户端开发工程师、服务端开发工程师组成一个团队&#xff0c;团队之间进行合作&#xff0c;一般我们都离不开API接口管理和测试&#x…

JITWatch很折腾?有这篇文章在可以放心

什么是JITWatch&#xff1f; 什么是JITWatch&#xff1f; 大多数情况下&#xff0c;通过诸如javap等反编译工具来查看源码的字节码已经能够满足我们的日常需求。 但是不排除在有些特定场景下&#xff0c;我们需要通过反汇编来查看相应的汇编指令。 JITWatch——JIT编译日志分…

数据库数字类型与日期类型

数据类型 MySQL数据库提供了多种数据类型&#xff0c;其中包括数字类型、时间和日期类型、字符串类型 数字类型 数字类型包括整数类型、浮点数类型、定点类型、BIT&#xff08;位&#xff09;类型等 整数类型 整数类型根据取值范围的不同又分为五种&#xff1a; TINYINTS…

搭建 Tensorflow 和 Keras 开发环境

在Tensorflow官网的安装向导中可以看到&#xff0c;tf有两个版本&#xff0c;分别为CPU和GPU版本&#xff0c;两个版本的区别在于&#xff1a;GPU版本依赖于NVIDIA&#xff08;英伟达™&#xff09;GPU&#xff08;图形处理器&#xff0c;即显卡&#xff09;&#xff0c;并且通…

一步一步把废旧的电脑变成一个高端的可指定出网、节点和链路的路由器,包含详细过程及快捷脚本(一)

一步一步把废旧的电脑变成一个高端的可指定出网、节点和链路的路由器,包含详细过程及快捷脚本(一)。 1、准备 这里的电脑可以是笔记本电脑或者台式电脑,台式电脑如果没有无线网卡,可以自己到网上买一个外接无线网卡,USB接口的那种,大概30米左右,这样用起来更方便。之…

谈一谈什么是 MySQL 中的 join 查询

前引 相信大家 MySQL 都用了很久了&#xff0c;各种 join 查询天天都在写&#xff0c;但是 join 查询到底是怎么查的&#xff0c;怎么写才是最正确的&#xff0c;今天我就和大家一起学习探讨一下 索引对 join 查询的影响 数据准备 假设有两张表 t1、t2&#xff0c;两张表都…

阿里大咖上传的 600 页 JVM 垃圾优化笔记飙升 GitHub 榜首

对于一个线上系统来说&#xff0c;经常性的会发生如&#xff1a; 系统突然卡死&#xff0c;无法访问&#xff0c;甚至出现 OOM。 服务器的 CPU 负载突然升高。 直接使用默认 JVM 参数上线&#xff0c;最终发现系统宕机。 想要调整 JVM 参数&#xff0c;但是无从下手。。。。…
最新文章