jQuery AJAX调用获得HTML响应

时间:2018-10-18 21:49:48

标签: javascript c# jquery asp.net ajax

我在.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对象中的错误函数将始终运行。错误看起来像这样:

image of error in Firefox Developer Edition

在Chrome中,它看起来像这样:

image of error in Chrome

响应以HTML形式返回:

image of response

image of response

当我检查请求的参数时,似乎传递的JSON对象格式正确,因此我不确定在这里出了什么问题或为什么WebMethod从未被击中。我检查了MDN documentation for the 302 code,但不确定是否与我的问题有关。根据我的研究,看来AJAX期望使用JSON而不是HTML,并且无法解析响应,但是我对原因感到困惑,因为WebMethod的返回是无效的并且不是反正打。为什么会收到HTML响应,为什么没有调用我的WebMethod

2 个答案:

答案 0 :(得分:0)

您在ajax调用中的网址必须是

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

答案 1 :(得分:0)

事实证明,问题出在我组织处理请求的方式上。