Javascript 在NodeJS+上返回成功;AJAX&;XML

Javascript 在NodeJS+上返回成功;AJAX&;XML,javascript,jquery,ajax,json,node.js,Javascript,Jquery,Ajax,Json,Node.js,当我试图返回成功时,我总是收到一个错误 以下是我的脚本代码: $.ajax({ xhr: function(){ var xhr = new window.XMLHttpRequest(); //Upload progress xhr.upload.addEventListener("progress", function(evt){ console.log('up'); uploadProg

当我试图返回成功时,我总是收到一个错误

以下是我的脚本代码:

$.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"}'));
或者这个:

res.end('{"success" : "Updated Successfully", "status" : 200}');
res.status(200).send(JSON.parse('{"success":"Hey"}'));
e、 t.c


我总是有一个错误警报

您确定传递给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));

解决方案:

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

变化:

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

为什么不返回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).键入('text/xml').send(xml({success:'Hello'}))
不一样,但感谢您的帮助;)@Ivandunits没有任何意义,200状态意味着没有错误,因此应该调用成功回调,除非从服务器返回的json数据格式不正确Maybe。。。。这是我的res.:
res.status(200).type('application/json').json({success:'Hello'})
一个小时前我尝试了同样的方法,但没有成功,因为这看起来难以置信正确的type dude:)
text/xml
谢谢你的帮助;)出现错误是因为前端在响应中需要xml(请参见$.ajax函数中的
dataType
选项),而您从后端返回json。很高兴你能弄明白。请随意接受您自己的答案,以便将此问题标记为已解决:)