将JSON字符串发送到C#方法

时间:2011-10-01 18:32:40

标签: ajax json

在我的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在哪里?

1 个答案:

答案 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);
}