我发送jsonp请求为:
var jsoncallback = "?jsoncallback=?"
$.getJSON( reportURL + jsoncallback, {
tags: "",
tagmode: "any",
format: "json"
})
.done(function( data ) {
$.each( data.items, function( i, item ) {
alert( item );
});
});
我已发出提醒以查看请求是否有效。在服务器端,在节点js文件中,我响应请求为:
..
console.log("request received");
response.writeHead( 200, { "Content-Type": "application/json" } );
..
response.end();
在日志中我可以看到收到的请求。问题是没有弹出警报窗口。
这可能是什么原因?
答案 0 :(得分:1)
我只是reponse.writeHead(...)和(出于测试原因 - 只是头部和结尾)response.end()
使用URL中的jsoncallback=?
,jQuery期望JSONP <script>
作为响应。为此,服务器应至少写出“ padding 。”
这是对jsoncallback
命名的函数的调用。它不仅仅是?
- jQuery用jQuery1910123456789_0123456789
的伪随机函数名替换它。为此,响应至少应该是:
jQuery1910123456789_0123456789();
您需要从request.url
:
var parsedUrl = url.parse(request.url, true);
var query = parsedUrl.query || {};
if ('jsoncallback' in query) {
response.write(query.jsoncallback + '();');
}
// ...
并且,一旦你有data
输出它:
if ('jsoncallback' in query) {
response.write(query.jsoncallback + '(' + JSON.stringify(data) + ');');
} else {
response.write(JSON.stringify(data));
}
答案 1 :(得分:0)