【发布时间】:2018-10-18 21:49:47
【问题描述】:
我在 .aspx 文件中有一个 AJAX 调用:
var data = { "schoolID": id };
$.ajax({
type: "POST"
, url: "schools.aspx/DeleteSchool"
, data: JSON.stringify(data)
, contentType: "application/json; charset=utf-8"
, dataType: "json"
, error: function (XMLHttpRequest, textStatus, errorThrown) {
$.alert({
title: "Error deleting school"
, type: "red"
, content: XMLHttpRequest + "||\n" + textStatus + "||\n" + errorThrown
});
});
点击按钮时调用。它应该将一个 id 传递给这个 C# 函数:
[WebMethod]
public void DeleteSchool(int schoolID)
{
string query = @"
DELETE
FROM tableName
WHERE id = @schoolID
";
List<SQLParameter> parameters = new List<SQLParameter> {
new SQLParameter("@schoolID", schoolID)
};
SqlConn.doQuery(query, parameters);
}
但是,当我在 C# 函数中放置断点时,它永远不会中断,并且 AJAX 对象中的错误函数始终运行。错误如下所示:
在 Chrome 中,它看起来像这样:
响应以 HTML 格式返回:
当我检查请求的参数时,我传递的 JSON 对象的格式似乎正确,所以我不确定这里出了什么问题,或者为什么永远不会命中 WebMethod。我检查了MDN documentation for the 302 code,但我不确定这是否与我的问题有关。根据我的研究,AJAX 似乎期待 JSON 而不是 HTML 并且无法解析响应,但我对为什么感到困惑,因为 WebMethod 的返回是无效的,并且无论如何都没有被击中.为什么我收到 HTML 响应,为什么我的 WebMethod 没有被调用?
【问题讨论】:
-
检查实际的 HTML 是什么。鉴于您正在运行 ASP.Net,它可能是一个 YSOD,它将为您提供有关该问题的一些信息。更好的是,设置断点并单步执行代码。
-
HTML 是网站的登陆页面。我已经多次在 Firefox 调试器中检查代码,但看不出有什么问题。它只是直接进入错误函数。
-
基于该错误,也许这会有所帮助:
JSON.stringify(JSON.parse(data)). -
@I.R.R.我试过了,它抛出了一个异常:
SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
标签: javascript c# jquery asp.net ajax