【发布时间】:2017-05-08 16:01:56
【问题描述】:
请看下面的 AJAX 代码:
function Save()
{
var checkBoxArray = $("input:checkbox:checked").map(function () {
return this.id
}).get();
var str = JSON.stringify(checkBoxArray);
var user = document.getElementById("ctl00_ContentPlaceHolder1_lstUsers");
$.ajax({
type: "POST",
url: "frmReview.aspx/AllocateReview",
data: '{strUser: "' + user.value + '", strCheckBoxes: ' + str + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess(),
async: false,
failure: function (response) {
alert('There was a problem allocating the reviews')
}
});
function OnSuccess() {
return function (response) {
alert("The reviews where allocated successfully");
}
}
}
以及下面的服务器端代码:
<System.Web.Services.WebMethod()> _
Public Shared Sub AllocateReview(ByVal strUser As String, ByVal strCheckBoxes As String)
msgbox("got here")
End Sub
我在消息框(服务器端)上放了一个断点。但是,它没有达到。如果我不通过 str (这是一个数组),即我在客户端和服务器端将其排除在外,就可以达到它。为什么数组没有传递给服务器?没有错误 - 就好像什么都没发生一样。
【问题讨论】:
-
您应该传递一个 JavaScript 名称/值对象作为
data的值;它不应该只是一个字符串,除非它是 URL 查询字符串的形式。 -
@Pointy,你能在答案中发布吗?
-
@Pointy 如果服务器需要,你可以传递一个 JSON 字符串
-
@epascarello 当然是的,但我认为从服务器端代码 sn-p 判断可能不是这种情况。
标签: javascript .net ajax vb.net