Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 似乎在getJSON上没有收到响应_Javascript_Json_Node.js_Jsonp - Fatal编程技术网

Javascript 似乎在getJSON上没有收到响应

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

我将jsonp请求发送为:

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,那个么仍然并没有弹出警报。