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数据,知道的给解答下……

(0)

相关推荐

  • Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据

    一.WebService.asmx 处理业务数据,在GetWhether方法中产生天气情况数据,供JqueryRequest.aspx调用,代码如下: 复制代码 代码如下: [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { public WebService () { //如果使用设计的组件,请取消注释以下行 //InitializeCompo

  • 关于jquery ajax 调用带参数的webservice返回XML数据一个小细节

    后来在一个不起眼的小站找到一个帖子,某个人的一个建议提醒了我. 我原来的代码是这样写的: 错误代码 复制代码 代码如下: $.ajax({ type: "post", url: "_service.asmx/getDataFromATable", data:" { tablename: temp }", dataType: "XML" ... WS是这样写的: webservice 复制代码 代码如下: [WebMethod]

  • Jquery + Ajax调用webService实例代码(asp.net)

    webService中要实现ajax调用,则要加这句代码: // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释. [System.Web.Script.Services.ScriptService] 代码下载 /201008/yuanma/WebService2.rar 复制代码 代码如下: //无参数调用 $(document).ready(function() { $('#btn1').click(function() { $.ajax({ typ

  • Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用

    一.WebService.asmx: 处理业务数据,在GetList方法中产生泛型集合数据,供JqueryRequest.aspx调用,代码如下: [WebMethod] 复制代码 代码如下: public List<string> GetList() { List<string> list = new List<string>(); list.Add("aaaaaaaaaaaa"); list.Add("bbbbbbbbbbbb"

  • Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用

    一.WebService.asmx: 处理业务数据,在GetDataSet()方法中产生DataSet(XML)数据,供JqueryRequest.aspx调用,代码如下: 复制代码 代码如下: [WebMethod] public DataSet GetDataSet() { DataSet ds = new DataSet(); DataTable dt = new DataTable(); dt.Columns.Add("Name", Type.GetType("Sys

  • jQuery AJAX 调用WebService实现代码

    用jQuery调用其他项目的WebService 实现登录验证功能 html输入用户名密码: 代码 复制代码 代码如下: <table style="width: 400px"> <tr> <td style="width: 200px" class="left"> Login ID: </td> <td style="width: 200px" class="l

  • Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用

    一.WebService.asmx: 处理业务数据,在GetPerson方法中产生Person实体类数据,供JqueryRequest.aspx调用,代码如下: 复制代码 代码如下: [WebMethod] public Person GetPerson(string name, int age, string address) { Person p = new Person() { Name = name, Age = age, Address = address }; return p; }

  • jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码

    ws.aspx 代码 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1&q

  • Jquery ajax传递复杂参数给WebService的实现代码

    Entity: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; namespace Entity { [DataContract] public class User { [DataMember] public string Name { get; set; } [DataMemb

  • jQuery ajax调用webservice注意事项

    jquery ajax调用webservice(C#)要注意的几个事项: 1.web.config里需要配置2个地方 <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.

随机推荐