【问题标题】:Return Success on NodeJS + AJAX&XML在 Node JS + AJAX XML 上返回成功
【发布时间】:2015-05-11 06:19:17
【问题描述】:

当我尝试返回成功时,我总是收到错误消息。

这是我的脚本代码:

$.ajax({
    xhr: function(){
        var xhr = new window.XMLHttpRequest();
        //Upload progress
        xhr.upload.addEventListener("progress", function(evt){
            console.log('up');
            uploadProgress(evt);
        }, false);
        //Download progress
        xhr.addEventListener("progress", function(evt){
            console.log('down');
        }, false);
        return xhr;
    },
    url : 'upload',
    type: 'POST',
    data: data,
    cache: false,
    dataType: 'xml',
    processData: false,
    contentType: false,
    success: function (result) {
        alert('success!');
    },
    error: function(err){
        alert("error --'");
        console.log(err);
    }
});

我尝试用这个返回成功消息:

var response = {
    status  : 200,
    success : 'Updated Successfully'
}
res.type('json');
res.end(JSON.stringify(response));

或者这个:

res.end('{"success" : "Updated Successfully", "status" : 200}');

或者这个:

res.status(200).send(JSON.parse('{"success":"Hey"}'));

e.t.c ...

而且我总是收到错误警报。 . .

【问题讨论】:

  • 为什么不返回res.json({key: value})?事实上,您设置的响应类型不正确。应该是application\json
  • @VsevolodGoloviznin 你的意思是这样的吗? res.status(200).type('application/json').json({success:'Hello'}); 因为它不起作用:X
  • @VsevolodGoloviznin,同样的结果....
  • 能否请您发布您的节点配置?简单地说,您可以将res.send({ key: value});application/json 写成content-type 像这样res.setHeader('content-type', 'application/json');
  • @VsevolodGoloviznin 这里是解决方案:res.status(200).type('text/xml').send(xml({success:'Hello'})) 不一样,但感谢您的帮助;)

标签: javascript jquery ajax json node.js


【解决方案1】:

您确定您在传递给 ajax 的选项上的url: 'upload' 是正确的吗? 另外,在错误处理程序上试试这个:

 error: (jqXHR, exception) {
        alert("error --'");
        console.log(jqXHR.status);
    }

然后看看你是否收到了 HTTP 404,或者可能是 500,这意味着实际的服务器被命中但后端有错误

如果您返回 200,那么您的问题应该是从服务器返回的格式错误的 json,请在返回 json 时尝试此操作:

res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(object));

【讨论】:

  • @IvanDunets 这没有任何意义,200状态表示没有错误,所以应该已经调用了成功回调,除非服务器返回的json数据格式错误
  • 也许.... 那是我的资源。 :res.status(200).type('application/json').json({success:'Hello'})
  • 一个小时前我尝试了同样的方法,但这不起作用,尽管看起来很不可思议
  • 不正确的类型老兄:) text/xml 感谢您的帮助 ;)
【解决方案2】:

解决方案:

如果你想发送xml数据,你需要发送相同类型的响应:)

变化:

var xml = require('xml');
//and response:
res.status(200).type('text/xml').send(xml({success:'Hello'}));

【讨论】:

  • 您收到错误消息,因为前端在响应中需要 xml(请参阅 $.ajax 函数中的 dataType 选项),而您正在从后端返回 json。很高兴你能弄清楚。请随意接受您自己的答案,以便将此问题标记为已解决:)
猜你喜欢
  • 1970-01-01
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
  • 1970-01-01
  • 2012-03-20
  • 2013-03-10
  • 2023-03-24
相关资源
最近更新 更多