为什么POST即使一切正确执行也会返回错误?

时间:2015-07-24 10:06:24

标签: javascript ajax node.js passport-local

在服务器端,有以下代码来接收POST请求:

$("#btn-signup").click(function() {
    var data = $('form#signupform').serialize();
    $.ajax({
        type: "POST",
        dataType: "jsonp",
        url: "/auth/signup", //process to mail
        data: data,
        success: function(msg) {
            console.log("Received data: " + msg);
            if (msg.redirect) {
                window.location.href = msg.redirect;
            }
        },
        error: function(e) {
            console.log("Error: " + e.responseText);
        }
    });
});

在客户端,以下函数执行POST请求并处理响应:

Error: {"redirect":"auth"}

在发布帖子请求时,我得到以下控制台输出:

{{1}}

因此我假设服务器正确返回所有内容但不知道为什么在客户端它被认为是错误。

有谁知道出了什么问题?

2 个答案:

答案 0 :(得分:2)

我猜你正在看到一个解析错误。 jQuery期待看到JSONP,它是一个包含在回调函数中的JSON,类似于

callback({"key" : "value"});

但您只返回常规JSON,如

{"key" : "value"}

将jQuery的dataType从jsonp更改为json

答案 1 :(得分:2)

使用JSONP(仅GET操作)无法执行POST操作。我假设你甚至不需要JSONP。

相反,请使用JSON并将代码更改为

dataType: "json",