客户端将这样的Json字符串作为$.ajax方法的data参数是没有问题的,然而,服务端的webservice该如何去写接收参数却成为了一个问题。在百度、谷歌了一番后,只发现提问的却没有回答的。索性还是自己去研究吧,发现其实Employee对象首先是一个数组,其次数组的每一项都是一个Dictionary字典类型。于是我尝试在服务端使用Dictionary[] Employee来接收客户端传递的参数,一切如我所料,成功!
客户端代码如下:
rush:js;">
//JQuery
调用webService导入数据
function LoadData() {
var studentData = CollectionData();
$.ajax({
url: "ImportDataService.asmx/ImportStu",type: "post",contentType: "application/json;charset=utf-8",dataType: "json",data: "{'students':[{'name':'KoBe ','sex':'boy','age':'20'},{'name':'Mary','sex':'girl','age':'19'}]}",success: function(result) {
alert(result.d);
},error: function(e) {
alert(e.responseText);
}
});
}
服务端代码如下:
rush:csharp;">
///
///
///
///
aram name="students">
///
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public string ImportStu(Dictionary []students)
{
if (students.Length == 0)
{
return "没有任何数据!";
}
else
{
try
{
foreach (Dictionary stu in students)
{
//构造一个新的Student对象。
Student student = new Student();
//为新构造的Student对象属性赋值。
foreach (string key in stu.Keys)
{
switch (key)
{
case "name":
student.Name = stu[key];
break;
case "sex":
student.Sex = stu[key];
break;
case "age":
int age;
if (Int32.TryParse(stu[key],out age))
{
student.Age = age;
}
else
{
student.Age = 0;
}
break;
default:
break;
}
}
}
return "导入学生成功!";
}
catch
{
throw new Exception("导入学生失败!");
}
}
}
需要注意的是,服务端参数名需要和客户端Json数组的key值相同,如上代码中,参数名都为students。
更多关于jQuery相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家jQuery程序设计有所帮助。
原文地址:https://www.jb51.cc/jquery/46739.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。