【问题标题】:jQuery Ajax POST error with Firefox and nodejsFirefox 和 nodejs 的 jQuery Ajax POST 错误
【发布时间】:2014-09-28 23:37:37
【问题描述】:

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

“就绪状态:0”

“响应文本:未定义”

“状态: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");
});

【问题讨论】:

  • 您的错误函数接收包含有用诊断的参数,请参阅 jQuery 文档。打印出这些诊断信息,您就会更好地了解发生了什么。
  • 所以我尝试了错误:function(xhr,textStatus,err) { console.log("readyState:" + xhr.readyState); console.log("responseText:"+xhr.responseText); console.log("状态:" + xhr.status); console.log("文本状态:" + textStatus); console.log("错误:" + err); } 但我只得到未定义或“0”。
  • 这是否产生了任何新信息?如果是这样,请将其添加到您的问题中。
  • 在 Firefox 上安装 Firebug 扩展,激活 Firebug,在 Firebug 中启用 Net 面板,然后使用该面板分析来自/来自浏览器的请求和响应。从 Firefox 进行调用时记录的服务器端是什么?与 Chrome 有什么不同?

标签: jquery ajax json firefox post


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2016-11-12
    • 1970-01-01
    相关资源
    最近更新 更多