在NodeJS + AJAX& XML上返回成功

时间:2015-03-09 22:41:52

标签: 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');
            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 ...

我总是有错误警报。 。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

<强>解决方案:

  

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

的变化:

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