在我的ASP.NET页面中,我有以下方法:
public static void UpdatePage(string accessCode, string newURL)
{
HttpContext.Current.Cache[accessCode] = newURL;
}
它实际上应该接收accessCode和newURL并相应地更新Cache。我想使用AJAX请求从JavaScript将值传递给该方法。它的代码如下:
function sendUpdate() {
var code = jsGetQueryString("code");
var url = $("#url_field").val();
var dataToSend = [ {accessCode: code, newURL: url} ];
var options = { error: function(msg) { alert(msg.d); },
type: "POST", url: "lite_host.aspx/UpdatePage",
data: {"items":dataToSend},
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(response) { var results = response.d; } };
$.ajax(options);
}
然而,这似乎不起作用。有谁可以帮我弄清楚bug在哪里?
答案 0 :(得分:1)
UpdatePage是一个不返回任何内容的void方法,因此在响应中无需查看。
您可以查看HTTP返回代码并检查它是否正常,或者您可以修改Web方法:
public static bool UpdatePage(string accessCode, string newURL)
{
bool result = true;
try {
HttpContext.Current.Cache[accessCode] = newURL;
}
catch {
result = false;
}
return result
}
修改强>
看起来你的WebMethod的JSON参数不正确,你不需要JSON中的“items”。参数应该与您的webmethod完全匹配。
function sendUpdate() {
var code = jsGetQueryString("code");
var url = $("#url_field").val();
var options = { error: function(msg) { alert(msg.d); },
type: "POST", url: "lite_host.aspx/UpdatePage",
data: {'accessCode': code, 'newURL': url},
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(response) { var results = response.d; } };
$.ajax(options);
}