Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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
Php AJAX JSON锁定浏览器_Php_Json_Google Chrome_Browser_Locking - Fatal编程技术网

Php AJAX JSON锁定浏览器

Php AJAX JSON锁定浏览器,php,json,google-chrome,browser,locking,Php,Json,Google Chrome,Browser,Locking,服务器端PHP脚本 echo " "; while(connection_aborted()==0) { sleep(10); } 客户端JQuery代码(工作正常) 客户端JQuery代码(导致问题) 当我运行第一个JQuery代码并刷新浏览器时,一切正常(浏览器重新加载)。当运行第二个JQuery代码(注意parseJSON)并尝试刷新浏览器时,浏览器被锁定(Chrome),它永远不会重新加载。jquery帖子导致了这个锁,但我不明白为什么?为什么回调函数中的parseJSON会导

服务器端PHP脚本

echo " ";
while(connection_aborted()==0) {
    sleep(10);
}
客户端JQuery代码(工作正常)

客户端JQuery代码(导致问题)

当我运行第一个JQuery代码并刷新浏览器时,一切正常(浏览器重新加载)。当运行第二个JQuery代码(注意parseJSON)并尝试刷新浏览器时,浏览器被锁定(Chrome),它永远不会重新加载。jquery帖子导致了这个锁,但我不明白为什么?为什么回调函数中的parseJSON会导致浏览器锁定。有什么解决办法吗

仅供参考:上面的代码只是我实际编写的代码的一个小版本,在我的真实代码中,我从服务器端传递真实的JSON数据,并使用JQuery进行处理。

试试看

$.post("/url/to/server", some_data, function (d) {
    console.log(d);
}, "json");

如果它仍然不起作用,我们需要您的JSON样本。

似乎没有任何有效的理由说明为什么
$。parseJSON
将永远阻止/锁定您的浏览器。您接收的变量
“d”
具体是什么?它的大小是多少

您还必须访问:

Chrome --> Right click --> Inspect element --> 
Profiles --> Collect Javascript CPU Profile

查看浏览器端到底出了什么问题。

大小非常小,几乎只有几KB。我在PHP端做了一些测试,当我在浏览器上单击“刷新”时,connection_aborted()仍然返回“0”,这意味着连接保持活动状态。为什么,我不明白?你的json没有大小,应该不会有问题。所以我怀疑这可能是服务器端php脚本的问题。但是你说没有美元,一切都像上帝为你创造的一样。这里有些东西看起来很奇怪,但我们仍然不知道:)我使用睡眠有一个很好的理由,不过我不会这么做。刷新页面时,connection_aborted()返回“1”。但是当我有了paseJSON,PHP脚本就会一直运行。信不信由你,就是这样!我已经编程很长时间了,只是犯了一个小错误。但是这个。。。他抓住了我!互联网上有关于长轮询AJAX锁定浏览器的帖子,但我似乎没有任何帖子这么奇怪!我看了这本php手册(我并没有像你那样使用connection_abort())。。。。在第一条注释中,用户指出要抛出
echo“
”;/要在chrome上实现此功能
。。。他还指出,使用输出缓冲区方法时,您需要包含这些内容才能在chrome上工作。我对这个技巧没有任何经验,但是你一定要浏览一下这个页面。。。也尝试过了,结果与函数中包含$.parseJSON的结果相同。浏览器根本不刷新!JSON示例:{“已连接的用户”:1,“图像”:{“附加图像”:[{“图像id”:“65106”,“url”:“http:\/\/a5.sphotos.ak.fbcdn.net\/hphotos-ak-ash4\/s2048x2048\/392472”\u 1015074093239262\u 1430628621\u 9409919\u 12445871\u n.jpg”…{“图像id”:“65107”,“url”:“http:\/\/a2.sphotos.ak.fbcdn.net\/hphotos-ak-ash3\/s2048x2048\/559516\u 391927920841880\u 184289921605682\u 1308515\u 1885941461\u n.jpg”;“current\u image\u id:“65109”}这不是无效的,“…”,我只是在那里说,因为发表评论有600个字符的限制。JSON是由php JSON编码生成的,它不可能无效
$.post("/url/to/server", some_data, function (d) {
    console.log(d);
}, "json");
Chrome --> Right click --> Inspect element --> 
Profiles --> Collect Javascript CPU Profile