我有一个表,允许用户按照他们想要的顺序拖放行,然后保存它们。让拖放部件工作没问题。这是我遇到的问题。我正在向Web服务发送一个Ajax调用,然后进行保存。我似乎无法在Web服务中实际捕获请求。
我的JavaScript函数如下所示:
$(document).ready(
function () {
$(".sortable").sortable({
update: function () {
serial = $('.sortable').sortable('serialize');
$.ajax({
url: "MyWebService.asmx/SortTable",
type: "post",
data: serial,
error: function () {
alert("theres an error with AJAX");
}
});
}
});
});
JSON字符串从Firebug向我展示的内容看起来很好。 Web服务功能如下:
[WebMethod]
public string SortTable(String[] rows)
{
//SaveChanges();
return "Called!";
}
当我在那里放置一个断点时,它永远不会被击中。但是当函数中没有参数时,它会受到影响。我已经尝试用“对象”替换“String []”并且它仍然没有被击中,我觉得很奇怪。这是怎么回事?
答案 0 :(得分:0)
您可能需要使用[ScriptService]
属性修饰Web服务,以允许客户端脚本调用它。此外,如果要发送JSON请求,则需要指定内容类型。另一个评论是将请求作为一个实际的JSON对象发送,可以使用JSON.stringify
方法实现(也许$('.sortable').sortable('serialize')
调用已经这样做了,我不熟悉,你只需要确保POSTed值如下所示:[ 'row1', 'row2', ... ]
):
$.ajax({
url: 'MyWebService.asmx/SortTable',
type: 'post',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify([ 'row1', 'row2', 'row3' ]),
error: function () {
alert('theres an error with AJAX');
}
});