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。很高兴你能弄明白。请随意接受您自己的答案,以便将此问题标记为已解决:)