专栏首页hbbliyongasp.net :使用jquery 的ajax +WebService+json 实现无刷新去后台值

asp.net :使用jquery 的ajax +WebService+json 实现无刷新去后台值

首先贴上Jquery的ajax:

     $.ajax({
                url: 'ws_Ajax.asmx/BindDictByUpper',
                type: 'POST',

                contentType: 'application/json;charset=utf-8',
                dataType: 'json',
                data: '{ PpareId:"' + varlue + '"}',
                success: function (data) {
                    var dataObj = eval("(" + data + ")");
                    //                    $('#myList').html('');
                    //                    for (var i = 0; i < msg.d.length; i++) {
                    //                        $('#myList').append('<li>' + msg.d[i] + '</li>');
                    // }
                    alert(dataObj);
                    $.each({ name: "John", lang: "JS" }, function (i, n) {
                        alert("Name: " + i + ", Value: " + n);
                    });

                    $.each(dataObj, function (idx, item) {
                        if (idx == 0) {
                            return true; //同countinue,返回false同break 
                        }
                        alert("name:" + item['name'] + ",value:" + item['value']);
                    });

                },

                //data: '{query:"' + $('#editQuery').val() + '"}',
                processData: false
            });

好,前台写好,建一个webservice页,写上方法:

  /// <summary> 
    /// Datatable转换为Json 
    /// </summary> 
    /// <param name="table">Datatable对象</param> 
    /// <returns>Json字符串</returns>    //然后在webservice中需要返回json数据的方法加上如下属性  [ScriptMethod(ResponseFormat=ResponseFormat.Json)]
    public static string ToJson(DataTable Adt)
    {
        StringBuilder jsonString = new StringBuilder();
        jsonString.Append("[");
        foreach (DataRow pdr in Adt.Rows)
        {
            jsonString.Append("{");
            jsonString.AppendFormat("name:\"{0}\",value:\"{1}\"", pdr["字典内容"].ToString(), pdr["序号"].ToString());
            jsonString.Append("},");
            // jsonString.AppendFormat("{name:'{0}',value:'{1}'},", pdr["字典内容"].ToString(), pdr["序号"].ToString());   
        }
        jsonString.Remove(jsonString.Length - 1, 1);
       jsonString.Append("]");
        return jsonString.ToString();
    }

 ScriptMethod在 using System.Web.Script.Services 命名空间下,这里还可以设置是否使用 get方式来调用 UseHttpGet=true

然后尝试着运行,这是出问题列,无论怎样运行都不能调到后台方法:

最后在网上查列好久

才发现在新建的webservice页少了一句关键的话:

// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。

在类前面加上这句话就可以了

加上以后再运行,好,可以调到后台了

后台的数据也发送到前台

但又出现问题列,发过来的数据不能以解析出来json数据

按网上说的,只要把ajax中的dataType设置为json就行了,但是实际上不行,然后在网上查了下:

1、对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次 

2.对于服务器返回的JSON字符串,如果jquery异步请求将type(一般为这个配置属性)设为“json”,或者利用$.getJSON()方法获得服务器返回,那么就不需要eval()方法了,因为这时候得到的结果已经是json对象了,只需直接调用该对象即可,这里以$.getJSON方法为例说明数据处理方法

但是我把他的dataType设置为json,应该直接可以用le?

于是我把传回来的数据放在eval()方法里面处理了下,再调用就可以le?

这样前台调出来的数据就可以直接按你需要的方式处理了。

我这里还又一个疑问:

我用这种方式取数为什么查不出来数据(我对json不是很熟,第一次用):

$.each(data.root,function(idx,item){ 
if(idx==0){ 
return true;//同countinue,返回false同break 
} 
alert("name:"+item.name+",value:"+item.value); 
}); 
}); 

网上看的这样方式页可以调用json数据,知道的给解答下……

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android 操作Sqlite

    首先要用一个类来继承SQLiteOpenHelper,并必须实现   public DatabaseHelper(Context context, Strin...

    hbbliyong
  • 运行yum时出现/var/run/yum.pid已被锁定,PID为xxxx的另一个程序正在运行的问题解决

    删除文件后再次运行yum可用。 --------------------- 作者:黯淡荣耀 来源:CSDN 原文:https://blog.csdn.ne...

    hbbliyong
  • c# 获取串口设备的输入(unsigned char *和 char*)

    因为是C#,所以平台肯定是.NET了。 之前因为一个小小的业务需要接触了下密码键盘的操作。其实就是简单的获取用户输入密码的操作,没碰到什么大的问题,但是查资料的...

    hbbliyong
  • 谈一谈Coders Programmer Developer的区别

    记得之前我们培训班里有学心理学的,我的一个朋友是学养殖的,表弟是学化工的结果都能干程序员,而且还都能完成工作,那么为什么还要要求这些?

    ZY_FlyWay
  • 深入理解java虚拟机笔记(一)-java内存区域与内存溢出

    前言 这是深入理解Java虚拟机一书的笔记,来自第二章。因为这本书讲的比较深奥,这是第二次看,需要记录一下笔记。 2. 运行时数据区域 java虚拟机所管理的内...

    奋斗蒙
  • 苏南全球创客大赛圆满结束,智能手势翻译手套勇夺第一

    镁客网
  • 捷普集团收购的域名“服装”clothingplus.com已建站

    根据曝料称,近期美资企业捷普集团(Jabil Circuit)收购了英文域名clothingplus.com,目前已被启用建站。

    躲在树上的域小名
  • Python 实现 Canny 边缘检测算法

    Canny 边缘检测算法由计算机科学家 John F. Canny 于 1986 年提出的。其不仅提供了算法,还带来了一套边缘检测的理论,分阶段的解释如何实现边...

    caoqi95
  • Intel芯片架构中TEE的实现技术之SGX(三)开发环境简介及搭建

    前述内容请参照 Intel芯片架构中TEE的实现技术之SGX初探(二) Intel芯片架构中TEE的实现技术之SGX初探 SGX技术是Intel于2013年在I...

    安智客
  • 【死磕Sharding-jdbc】---结果合并总结

    这句SQL会使得MySQL在无法利用索引的情况下跳过1000000条记录后,再获取10条记录,其性能可想而知。而在分库分表的情况下(假设分为2个库),为了保证数...

    用户1655470

扫码关注云+社区

领取腾讯云代金券