2011-10-01 92 views
0

在我的ASP.NET頁面,我有以下方法:發送JSON字符串到C#方法

public static void UpdatePage(string accessCode, string newURL) 
{ 
    HttpContext.Current.Cache[accessCode] = newURL; 
} 

它實際上應該得到accessCode和的newURL並相應更新高速緩存。我想使用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); 
} 

但是,這似乎並不奏效。有人能幫我弄清楚錯誤在哪裏嗎?

回答

1

UpdatePage是一個無法返回任何東西的無效方法,所以在響應中沒有任何內容。

你可以看一下HTTP返回代碼,並檢查它是200 OK或者你可以修改Web方法:

public static bool UpdatePage(string accessCode, string newURL) 
{ 
    bool result = true; 
    try { 
     HttpContext.Current.Cache[accessCode] = newURL; 
    } 
    catch { 
     result = false; 
    } 

    return result 
} 

編輯:

它看起來像你的JSON參數傳遞給WebMethod不正確,您不需要JSON中的「項目」。參數應該與您的web方法完全匹配。

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); 
} 
+0

感謝您的回覆。我其實不希望這種方法返回任何東西。它只需要更新緩存中的值。 – cycero

+0

@cycero我已經更新了回覆,你的.ajax選項需要調整。 – dmck

+0

感謝您的幫助。但是在調用sendUpdate()函數時,我得到了一個「未定義」的警報。這實際上是在AJAX請求的錯誤情況下調用的警報。 – cycero