2

我有一个高度 ajax 运行的网站,除了一个特定的 Ajax 调用之外,一切都像黄油一样顺利运行。在随机数次调用后,它似乎永远不会返回。这不是缓存问题,因为我已经使用 $ajax.Setup 关闭了缓存,而且它也是随机发生的,而不仅仅是在第一次调用之后。但是,一旦发生这种情况,在我刷新页面之前它将无法再次工作。我已经确认它与服务器上的脚本无关,因为出于测试目的,我只是让它立即返回。

这个调用唯一的独特之处是我传递了一个相当大的动态创建的 json 对象。我想知道 json 对象的构造是否存在错误,尽管我有点怀疑,因为我相信同一个 JSON 对象可以传递一次并工作,然后再次传递而不是。所以,此时我唯一的理论是这是我最长的 ajax 调用,多次调用它只是超载了一些服务器阈值。有人对这个有了解吗?我正在运行 PHP 和 IIS。

这是我使用的简单代码:

$.post("<?=$_SERVER['PHP_SELF']?>?ajax=editType", {id1: id1, id2: id2, json: jsonString}, function(data) {
    console.log(data);                  
}, "html").error(function(xhr, status, error) {
    alert("Error: " + status);
});

json字符串是:

{"0":{"part_type_column_id":"526","displayable_name":"Fourth","column_number":1,"default_visible":"on","datatype":"Radio Button","value_options":"First Radio,Second Radio,Third Radio,Fourth Radio,Fifth Radio"},"1":{"part_type_column_id":"525","displayable_name":"Fifthd","column_number":2,"default_visible":"on","datatype":"Checkbox"},"2":{"displayable_name":"asdf","column_number":3,"default_visible":"on","datatype":"Text"}}

如果我在它没有立即返回之后继续发送这个 ajax 调用,它将停止站点上的所有 ajax,直到它超时。在似乎需要永远之后,它会超时,最后只是警告“错误”。

知道为什么会发生这种情况吗?我能想到的只是达到了某种最大传输限制。

4

3 回答 3

1

您没有回显 $_SERVER['PHP_SELF']。您的标签需要更改为调用 echo 或仅使用

于 2012-08-14T22:24:50.480 回答
1

您没有打印变量 $_SERVER['PHP_SELF']。用途

<?=$_SERVER['PHP_SELF']?> 
or
<? echo $_SERVER['PHP_SELF']?> 
于 2012-08-14T22:56:50.613 回答
1

几天前我遇到了同样的问题。在我的情况下,返回码是 0。这种类型的问题有两种情况。1.如果你进行跨域调用,浏览器拒绝了你的ajax。2. 如果您的服务器端出现问题,不允许您的 ajax 立即执行并断开连接。

我的情况是第2个。我在我的服务器上运行一个恶魔,它正在监视服务器上的每个调用。这个恶魔甚至在建立连接之前就放弃了我的特定 ajax 调用。我停止了它,然后那个特定的 ajax 又开始工作了。我想知道你的情况是否也是同样的原因。

谢谢。

于 2013-06-27T07:00:11.750 回答