登录  /  注册
首页 > web前端 > js教程 > 正文

asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码_jquery

php中文网
发布: 2016-05-16 18:19:17
原创
1159人浏览过

首先贴上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 // $('#myList').append('
  • ' + msg.d[i] + '
  • ');
    // }
    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页,写上方法:
    复制代码 代码如下:

    ///
    /// Datatable转换为Json
    ///

    /// Datatable对象
    /// 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();
    }

    然后尝试着运行,这是出问题列,无论怎样运行都不能调到后台方法:
    最后在网上查列好久
    才发现在新建的webservice页少了一句关键的话:

    复制代码 代码如下:

    [System.Web.Script.Services.ScriptService]


    在类前面加上这句话就可以了
    加上以后再运行,好,可以调到后台了
    后台的数据也发送到前台
    但又出现问题列,发过来的数据不能以解析出来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数据,知道的给解答下……
    智能AI问答
    PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
    来源:php中文网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    关于CSS思维导图的课件在哪? 课件
    凡人来自于2024-04-16 10:10:18
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习
    PHP中文网抖音号
    发现有趣的

    Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号