AJAX中的成功或错误回调无法正常工作

时间:2014-12-18 17:52:38

标签: javascript jquery ajax

$(document).ready(function () {
$("#loginForm").submit(function (e)
{
    var Data = $(this).serializeArray();
    var formURL = $(this).attr("action");
    var PostData =
    {
        "CompanyName": $(this).serializeArray().CompanyName,
        "Username": $(this).serializeArray().Username,
        "Password": $(this).serializeArray().Password
    }
    $.ajax(
    {
        url: formURL,            
        data: PostData,
        success: function (data, textStatus, jqXHR) {
            alert("Data" + data);
            alert("Jq" + jqXHR);
            alert("textStatus" + textStatus);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert("Failed..ajax error response type " + textStatus);
        }
    });
    e.preventDefault(); //STOP default action
})
});

$("#loginForm").submit(); //SUBMIT FORM

这是对C#代码的一个简单的Ajax请求,我知道。我确定C#给出了正确的值(根据情况)。

根据情况,C#返回truefalse。但是在任何情况下,这个Ajax脚本都没有给我一个我编码的警报窗口。

相反,我从

得到了这个回应

This XML file does not appear to have any style information associated with it. The document tree is shown below. <boolean xmlns="http://schemas.microsoft.com/2003/10/Serialization/">false</boolean>

false时,标签中的值只有在真实时才会发生变化。 任何人都可以告诉我为什么successerror都无效。

2 个答案:

答案 0 :(得分:0)

从它的名称可以看出.serializeArray()方法返回一个数组 - 而不是一个对象。该数组的格式为:

[
  {
    name: "a",
    value: "1"
  },
  {
    name: "b",
    value: "2"
  },
  {
    name: "c",
    value: "3"
  }
]

因此,要访问第三个value,您需要提供索引2 - ..[2].value ... name ...[2].name。您的代码有错误会阻止进行ajax调用。错误是否可能来自其他地方?

因此改变:

var PostData =
{
    "CompanyName": $(this).serializeArray().CompanyName,
    "Username": $(this).serializeArray().Username,
    "Password": $(this).serializeArray().Password
}

要:

var PostDate = $(this).serialize();

答案 1 :(得分:0)

使工作更好的东西是:

$("#loginForm").submit(function (event) {
    event.preventDefault();
    $.post($(this).attr("action"), $(this).serialize())
        .done(function (results) {
        alert(results);
    })
        .fail(function (error) {
        alert(error);
    })
        .always(function () {
        alert("AJAX Complete");
    });
});