【问题标题】:jQuery AJAX call getting HTML responsejQuery AJAX 调用获取 HTML 响应
【发布时间】: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


【解决方案1】:

你在 ajax 调用中的 url 需要是

网址:“http://localhost:56302/context/Math/schools.aspx/DeleteSchool

【讨论】:

  • 我试过了,结果一模一样。我们不会在其他页面上的任何 AJAX 调用中使用完整的 URL。
  • 您在应用中使用区域吗?
  • 不,我没有使用区域。
【解决方案2】:

原来问题出在我的组织处理请求的方式上。

【讨论】:

    猜你喜欢
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多