尝试执行以下调用时出现解析错误:
$.ajax({
cache: true,
url: "http://localhost:3000/app/test/result1",
data: "{}",
type: "GET",
jsonpCallback: "testCall",
contentType: "application/jsonp; charset=utf-8",
dataType: "jsonp",
error: function (xhr, status, error) {
alert(error);
},
success: function (result) {
alert(result);
},
complete: function (request, textStatus) {
alert(request.responseText);
alert(textStatus);
}
});
如果我直接将请求网址粘贴到浏览器地址栏中,则返回的结果似乎是有效的JSON:
{
"name": "The Name",
"description": "The Description"
}
我正在使用IISnode,NodeJs&快递JS。我测试了两种情况:
// NODE JS CODE
var app = express();
app.get('/app/test/result1', function (req, res) {
res.send({ name: "The Name", description: "The Description" });
});
app.get('/app/test/result2', function (req, res) {
res.send(JSON.stringify({ name: "The Name", description: "the Description" }));
});
感谢任何建议,提前谢谢。
答案 0 :(得分:0)
您的dataType列为jsonp
。但是,您对node.js的响应不是格式正确的JSON-P响应。 JSON-P响应需要包含在回调中,如下所示:
testCall({ name: "The Name", description: "The Description" });
node.js代码看起来像这样:
res.send(
'testCall(' +
JSON.stringify({ name: "The Name", description: "the Description" }) +
');'
);
(另请注意,您不需要data: "{}"
行,因为请求是GET请求,并且不包含任何数据。它不应该伤害任何内容,但可能很好删除以避免混淆)。