我处境很奇怪。我使用以下方法在节点服务器(执行基本身份验证)上进行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();
我可以看到三个警告窗口弹出:
但是,如果我在服务器编写的字符串中添加一个字符,例如
res.write("1a");
我看到两个警告窗口弹出:
为什么普通字符串在第二种情况下实际上会导致错误?有任何想法吗? (顺便说一下,如果服务器写下“12”而不是“1a”,我就会成功。)
答案 0 :(得分:1)
您的内容类型是text / plain,但您的Ajax需要JSON。将内容类型更改为响应中的application / json,或更改期望为“text”的dataType。如果你走那条路线,确保它是有效的JSON。