Firefox和nodejs的jQuery Ajax POST错误

时间:2014-08-06 06:25:05

标签: jquery ajax json firefox post

我正在使用nodejs并尝试将json发送到我的服务器。代码在chrome上完美运行,但在firefox上我只得到错误回调而没有任何反应。我希望你们有个主意。我真的很绝望 控制台日志:

  

" readyState:0"

     

" responseText:undefined"

     

"状态:0"

     

"文字状态:错误"

     

"错误:"

这是我的app.js

var db = require('./src/routes/dbconnection');
app.post('/db', db.postJson);

这是我在服务器上的脚本

exports.postJson = function (req, res) {
    var message_body = req.body;
    insertIntoDB(message_body);
};

var insertIntoDB = function (message_body) {
    var messages = require('mongoskin').db('localhost:27017', {
        database: 'messages'
    }).collection('header_message');

    messages.insert(message_body, function (err, result) {
        if (err) throw err;
        if (result) console.log('Added!');
    });
}

这是我的Ajax功能

$.ajax({
    type: 'POST',
    url: '/db',
    dataType: 'json',
    data: {
        color: color,
        icon: icon,
        message: banner_message,
        leftButtonText: leftButtonText,
        rightButtonText: rightButtonText,
        closeMeButtonOnly: closeMeButtonOnly,
        isEnabled: isEnabled
    },
    success: function () {
        givePopup_success();
        writeMessages();
        showCurrentOne();
        console.log("success");
    },
    error: function(xhr, textStatus, err) {
                console.log("readyState: " + xhr.readyState);
                console.log("responseText: " + xhr.responseText);
                console.log("status: " + xhr.status);
                console.log("text status: " + textStatus);
                console.log("error: " + err);
    }
}).complete(function (data) {
    console.log("done");
});

1 个答案:

答案 0 :(得分:0)

$.ajax选项中,使用contentType: 'application/json',以便服务器知道数据有效负载中的预期结果。最好是明确的。

此外,如果您使用dataType选项,请确保您的服务器始终在其响应中返回json,即使它只是{}。如果你的服务器什么都没有返回,jQuery会认为这是一个错误。

有关详细信息,请阅读dataType - > jQuery ajax docs中的json部分。