使用jQuery处理POST的响应

时间:2013-10-26 00:07:39

标签: jquery node.js rest

我处境很奇怪。我使用以下方法在节点服务器(执行基本身份验证)上进行POST:

$.ajax({
        type: "POST",
        accepts: "text/plain",
        url: "http://localhost:3000/somewhere",
        data: JSON.stringify(something),
        contentType: "application/json; charset=UTF-8", 
        dataType: "json",
        success: function(data) {
            window.alert("Received back: '" + data + "'");
        },
        username: theUsername,
        password: "a password"
    }).done(function() {
        alert( "second success" );
    }).fail(function() {
        alert( "error" );
    }).always(function() {
        alert( "finished" );
    });

现在,当服务器响应时:

res.writeHead(200, {"Content-Type": "text/plain"});
res.write("1");
res.end();

我可以看到三个警告窗口弹出:

  • 收回'1'
  • 第二次成功
  • 成品

但是,如果我在服务器编写的字符串中添加一个字符,例如

res.write("1a");

我看到两个警告窗口弹出:

  • 错误
  • 成品

为什么普通字符串在第二种情况下实际上会导致错误?有任何想法吗? (顺便说一下,如果服务器写下“12”而不是“1a”,我就会成功。)

1 个答案:

答案 0 :(得分:1)

您的内容类型是text / plain,但您的Ajax需要JSON。将内容类型更改为响应中的application / json,或更改期望为“text”的dataType。如果你走那条路线,确保它是有效的JSON。