Javascript 似乎在getJSON上没有收到响应
我将jsonp请求发送为:Javascript 似乎在getJSON上没有收到响应,javascript,json,node.js,jsonp,Javascript,Json,Node.js,Jsonp,我将jsonp请求发送为: var jsoncallback = "?jsoncallback=?" $.getJSON( reportURL + jsoncallback, { tags: "", tagmode: "any", format: "json" }) .done(function( data ) { $.each( data.items, function( i, item ) { alert( item
var jsoncallback = "?jsoncallback=?"
$.getJSON( reportURL + jsoncallback, {
tags: "",
tagmode: "any",
format: "json"
})
.done(function( data ) {
$.each( data.items, function( i, item ) {
alert( item );
});
});
..
console.log("request received");
response.writeHead( 200, { "Content-Type": "application/json" } );
..
response.end();
我已经发出警告,看看这个请求是否有效。在服务器端,在节点js文件中,我对请求的响应如下:
var jsoncallback = "?jsoncallback=?"
$.getJSON( reportURL + jsoncallback, {
tags: "",
tagmode: "any",
format: "json"
})
.done(function( data ) {
$.each( data.items, function( i, item ) {
alert( item );
});
});
..
console.log("request received");
response.writeHead( 200, { "Content-Type": "application/json" } );
..
response.end();
在日志中,我可以看到收到了请求。问题是没有弹出警报窗口
这可能是什么原因?您是否确认JSON格式正确?核对一下 从: 从jQuery1.4开始,如果JSON文件包含语法错误,则 请求通常会无声地失败 我只需要response.writeHead(…)和(出于测试原因-只需要head和end)response.end() 使用URL中的
jsoncallback=?
,jQuery希望得到一个JSONP
作为响应。要使其工作,服务器至少应该写出“padding”
这是对名为jsoncallback
的函数的调用。它将不仅仅是?
——jQuery将其替换为一个伪随机函数名,其行为jQuery1910123456789\u 0123456789
。为此,响应至少应为:
jQuery1910123456789_0123456789();
您需要从请求中获取值。url
:
var parsedUrl = url.parse(request.url, true);
var query = parsedUrl.query || {};
if ('jsoncallback' in query) {
response.write(query.jsoncallback + '();');
}
// ...
并且,一旦您有数据
与之一起输出:
if ('jsoncallback' in query) {
response.write(query.jsoncallback + '(' + JSON.stringify(data) + ');');
} else {
response.write(JSON.stringify(data));
}
您查看过浏览器的控制台日志吗?当然。没有错误。您的警报位于每个方法中。也许迭代是不对的?数据格式正确吗?我从每个中移出了警报-仍然没有,当您移动它时,您是否调用了警报(项)?因为那也不会失败。尝试使用每个方法警报(“测试”),若我在服务器端只留下.writeHead和.end,那个么仍然并没有弹出警报。