Ajax不能传数据给asmx中的类

落花从草芥 2011-12-01 11:11:42
Ajax代码
//返回DataSet(XML)
$(document).ready(function() {
$('#btn5').click(function() {
$.ajax({
type: "POST",
url: "WebService1.asmx/GetDataSet",
data: "{i:1}",
dataType: 'xml', //返回的类型为XML ,和前面的Json,不一样了
success: function(result) {
//演示一下捕获
try {
$(result).find("Table1").each(function() {
$('#dictionary').prepend("<table><tr>");
$('#dictionary').append("<td>" + $(this).find("ID").text() + "</td><td>" + $(this).find("Value").text() + "</td>");
$('#dictionary').append("</tr><table>");
});
}
catch (e) {
alert(e);
return;
}
},
error: function(result, status) { //如果没有上面的捕获出错会执行这里的回调函数
if (status == 'error') {
alert(status);
}
}
});
});
});


asmx中类的代码
  [WebMethod]
public DataSet GetDataSet(int i)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("ID", Type.GetType("System.String"));
dt.Columns.Add("Value", Type.GetType("System.String"));
DataRow dr = dt.NewRow();
dr["ID"] = "1";
dr["Value"] = "新年快乐";
dt.Rows.Add(dr);
if (i == 1)
{
dr = dt.NewRow();
dr["ID"] = "2";
dr["Value"] = "万事如意";
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);
return ds;
}

这是为什么?求个解决方法,谢谢。
...全文
88 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hookee 2011-12-01
  • 打赏
  • 举报
回复
WebService的递交格式不是POST方式的格式,不能直接用ajax调用
要用XMLSpy看一下正确的<soap>的递交格式,然后 用 xmlhttp的setHaed方法递交拼接的soap头
Go 旅城通票 2011-12-01
  • 打赏
  • 举报
回复
  要设置jquery的 contentType: "application/json",为这个,这样webservice才会返回json格式的数据。。请认真查看别人的代码,这个是.net framework3.5增加的新特性,并且返回的数据结构为{"d":"序列化好后的ds对象json字符串"}

参考
jquery webservice

如果想偷懒,可以使用ajaxpro
落花从草芥 2011-12-01
  • 打赏
  • 举报
回复
我主要是参照的这个博客中的内容:jQuery Ajax 方法调用 Asp.Net WebService 的详细例子(原创)
落花从草芥 2011-12-01
  • 打赏
  • 举报
回复
$.ajax({
type: "POST",
url: "WebService1.asmx/GetDataSet",
data: "{i:1}",
dataType: 'xml', //返回的类型为XML ,和前面的Json,不一样了
success: function(result) {
这里的data: "{i:1}"中参数{i:1}主要是想弄成动态的,那么可以少些许多不带参数的函数。可是我连一个带参数的函数都弄不过,就得些几个差不多的类,代码页长了些。想呀,想呀,弄不来。
你说的这个我没接触过,不懂,看了也不用不来。
新手感觉压力很大。
hookee 2011-12-01
  • 打赏
  • 举报
回复
soap协议的格式是规定的
你可以查一下 xmlhttp调用 webservice,基本上都是拼接soap头这么做的,返回处理也很麻烦。
落花从草芥 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hookee 的回复:]
WebService的递交格式不是POST方式的格式,不能直接用ajax调用
要用XMLSpy看一下正确的<soap>的递交格式,然后 用 xmlhttp的setHaed方法递交拼接的soap头
[/Quote]

但是在有时候没有使用参数传递时,这个是可以用的。

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧