【发布时间】:2012-12-04 15:42:48
【问题描述】:
在我的 ASP.NET 网站中,我使用 Jquery 调用 Web 方法,如下所示:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{'param1': '" + param1 + "','param2': '" + param2+ "' }",
dataType: 'json',
url: "Default.aspx/TestMethod",
error: function (jqXHR, textStatus, errorThrown) {
alert("error: " + textStatus);
},
success: function (msg) {
document.getElementById("content").innerHTML = msg.d;
}
});
Web 方法定义为:
[System.Web.Services.WebMethod]
public static String TestMethod(String param1, String param2)
{
String to_return = /* result of operations on param1 and param2 */;
return to_return;
}
我的结果是一个包含 HTML 代码的字符串。
如果to_return 字符串很小,则它工作得很好。
但它给了我错误:
500 内部服务器错误 6.22s
我尝试使用 FireBug in Response 来探索它,它显示给我:
{"Message":"处理请求时出错。","StackTrace":"","ExceptionType":""}
使用 Visual Studio 中的断点,我已将 to_return 字符串复制到一个文本文件中。文件大小变为:127 KB。
可能出了什么问题?
【问题讨论】:
-
在我们继续之前,你到底为什么要这样做:
data: "{'param1': '" + param1 + "','param2': '" + param2+ "' }"?您可以声明一个实际的 JavaScript 对象,而不必将其设为代表该对象的字符串。 -
@AnthonyGrist:感谢您的提醒。实际上我是 Ajax 调用的新手。我一定会更新我的代码以使用 JavaScript 对象。
-
我会扩展您的
error回调函数来执行console.log(errorThrown);,然后使用浏览器的开发人员工具查看控制台中记录的内容;它可能会让您更清楚地了解错误是什么。还要检查to_return字符串是否代表失败的请求中的有效 JSON;如果指定dataType: 'json'时 jQuery 无法将响应解析为 JSON,则会出错。