2011-10-01 90 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