0

我处于一个奇怪的境地。我正在使用以下方法在节点服务器(执行基本身份验证)上发布:

$.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”,我就成功了。)

4

1 回答 1

1

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

于 2013-10-26T00:37:47.840 回答