Firefox 和 nodejs 的 jQuery Ajax POST 错误

Posted

技术标签:

【中文标题】Firefox 和 nodejs 的 jQuery Ajax POST 错误【英文标题】:jQuery Ajax POST error with Firefox and nodejs 【发布时间】: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 有什么不同? JSON return empty response on FireFox & Safari (Windows Vista)的可能重复 【参考方案1】:

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

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

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

【讨论】:

以上是关于Firefox 和 nodejs 的 jQuery Ajax POST 错误的主要内容,如果未能解决你的问题,请参考以下文章

纯前端开发眼里nodejs到底是什么?

Firefox 中的 jQuery 和 CSS 动画 Choppy

一起记录 Firefox/jQuery/CSS 动画的错误?

js与Jquery的区别是啥

为啥 Jquery 加载在 Firefox 中不起作用?

Jquery 日期规则在 Firefox 和 IE 中不起作用