我有以下 jQuery AJAX 请求:
function sendUpdate(urlToSend) {
var code = AccessCode;
var url = urlToSend;
var options = { error: function(msg) { alert(msg.d); },
type: "POST", url: "webmethods.aspx/UpdatePage",
data: "{ accessCode: " + code + ", newURL: '" + url + "' }",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function(response) { var results = response.d; } };
$.ajax(options);
}
以及相应的 ASP.NET WebMethod:
[WebMethod]
public static bool UpdatePage(string accessCode, string newURL)
{
bool result = true;
try
{
HttpContext.Current.Cache[accessCode + "l"] = newURL;
}
catch
{
result = false;
}
return result;
}
这一切过去都可以与“async:false”一起正常工作,但是我必须摆脱它,因为它会卡住浏览器,直到收到响应。现在上面的 AJAX 请求返回“undefined”。
谁能告诉我为什么会这样,问题出在哪里?
谢谢。
最佳答案
您真的应该确保正确编码此 JSON。 JSON.stringify
是最可靠的方法:
data: JSON.stringify({ accessCode: code, newURL: url })
这确保即使 code
和 url
变量包含一些危险字符,这些字符会破坏最终生成的 JSON 中的字符串连接,所有内容都将被正确编码。 JSON.stringify 方法自然内置于现代浏览器中,但如果您需要支持旧版,您可以包括 json2.js .
此外,因为您的代码不再阻塞,您应该确保如果您从某个按钮点击或表单提交中调用此 sendUpdate
,您可以通过返回 false 来取消默认操作。
关于c# - 对 ASP.NET WebMethod 的 jQuery AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7770679/