日期:2014-05-16  浏览次数:20543 次

超简单,关于jquery如何得到asmx的返回值
JScript code
$.ajaxSendMsg = function(data, fnSuccess, fnError) {
    $.ajax({
        type: "POST",        
        url:  "xxx",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: data,
        cache: false,
        success: fnSuccess,        
        erro: fnError
    });

前台程序
JScript code
        $.ajaxSendMsg(paramData, 
            function(data) {
                alert(data);   // 无值
                alert(data.d); // 返回的String值
                var result   = data.d.find("msg").text();      // 执行出错,呵呵,不懂          
                alert(result);
                return;



后台asmx里面
 
C# code
   [WebMethod]
        /// <summary>
        /// sendMessage, send message
        /// </summary>
        public String sendMessage(int chatId, int sendType, String msgData)
        { 
             return “test";
         }


问题1:为什么后台返回String,前台要用data.d才能取得?.d表示什么意思啊,还有find是什么意思啊,这个算jquery还是html还是方法撒
问题2:如果后台返回的是一个自定义类对象,前台怎么取得呢?是不是要做特殊处理啊
问题3:查了很多资料,很乱,像我现在这样的写法,前台一直取不到值,应该查什么资料看撒,

------解决方案--------------------
2.序列化成JSON字符串
------解决方案--------------------
探讨
如果我在asmx中写public class xxx返回个对象,那是不是在前台永远都取不到啊

------解决方案--------------------
1.data.d 这是json对象取值的方式。返回的数据格式是json,jquery帮你自动序列化了。
也可以使用data["d"]索引的方式取值,可以把json当作对象的数组。
find是jquery里面封装的一个函数,可以方便查找。详细的你查考jquery api文档。

2.如果后台WS返回的是对象,jquery 会自动帮你序列化成json对象的。
假如你返回的是一个Person类(里面包含id、name两个属性)的对象,你可以使用Data.name或者Data["name"]
去取值,很方便的。

3.你先理解什么是json数据格式吧。然后再熟悉jquery 的API文档。
------解决方案--------------------
参考
jQuery通过调用webservice返回json数据的问题

这里有详细介绍


更多问题参考
jquery webservice json