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

 更新时间:2010年09月19日 21:28:18   作者:  
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>
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数据,知道的给解答下……

相关文章

  • jquery live()调用不存在的解决方法

    jquery live()调用不存在的解决方法

    新版的jquery中,live()方法已经被删除了,所以在调用的时候会提示该函数不存在,下面有个不错的解决方法,大家可以参考下
    2014-02-02
  • jQuery实现遮罩层登录对话框

    jQuery实现遮罩层登录对话框

    用户登录是许多网站必备的功能。有一种方式就是不管在网站的哪个页面,点击登录按钮就会弹出一个遮罩层,显示用户登录的对话框。本文将推荐一个带二维码的登录弹出层,可拖动、关闭,有需要的朋友可以参考一下。
    2016-12-12
  • 2013年优秀jQuery插件整理小结

    2013年优秀jQuery插件整理小结

    今天为大家推荐的是2013年的第一期,在这期里面十个jQuery插件涵盖了响应式的网格布局插件、图片放大插件、表单元素中自定义select插件,google 地图插件、文件拖放上传插件、tooltip提示插件、3D旋转菜单等等
    2013-11-11
  • 原生Aajax 和jQuery Ajax 写法个人总结

    原生Aajax 和jQuery Ajax 写法个人总结

    AJAX:即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。本文重点给大家介绍原生Aajax 和jQuery Ajax 个人总结,一起看看吧
    2017-03-03
  • jquery使用canvas标签绘制验证码

    jquery使用canvas标签绘制验证码

    这篇文章主要为大家详细介绍了Jquery中用canvas标签绘制验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 浅谈jquery采用attr修改form表单enctype不起作用的问题

    浅谈jquery采用attr修改form表单enctype不起作用的问题

    下面小编就为大家带来一篇浅谈jquery采用attr修改form表单enctype不起作用的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • jquery checkbox无法用attr()二次勾选问题的解决方法

    jquery checkbox无法用attr()二次勾选问题的解决方法

    下面小编就为大家带来一篇jquery checkbox无法用attr()二次勾选问题的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • jquery validation验证表单插件

    jquery validation验证表单插件

    这篇文章主要为大家详细介绍了jquery validation验证表单插件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 20个非常棒的Jquery实用工具 国外文章

    20个非常棒的Jquery实用工具 国外文章

    网站设计者往往会设计一些小的工具类(widgets)或者一些可复用的程序,从而使页面更楚楚动人,更吸引浏览者驻足。这里收集了20个常用Jquery工具类,这些小的工具可以帮助网站设计人员和站长非常容易地创建漂亮的站点。
    2010-01-01
  • jquery点击切换背景色的简单实例

    jquery点击切换背景色的简单实例

    下面小编就为大家带来一篇jquery点击切换背景色的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08

最新评论