Skip to main content
 首页 » 编程设计

c#之对 ASP.NET WebMethod 的 jQuery AJAX 调用

2024年01月29日33bluestorm

我有以下 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 来取消默认操作。