发送JSON字符串到C#方法
问题描述:
在我的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);
}
但是,这似乎并不奏效。有人能帮我弄清楚错误在哪里吗?
答
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);
}
感谢您的回复。我其实不希望这种方法返回任何东西。它只需要更新缓存中的值。 – cycero
@cycero我已经更新了回复,你的.ajax选项需要调整。 – dmck
感谢您的帮助。但是在调用sendUpdate()函数时,我得到了一个“未定义”的警报。这实际上是在AJAX请求的错误情况下调用的警报。 – cycero