【发布时间】:2014-04-12 14:36:14
【问题描述】:
我在页面中有以下 JavaScript 代码。进行 ajax 调用时,我可以看到浏览器检查/调试器部分抛出 net::ERR_EMPTY_RESPONSE 错误。它在 localhost 环境中运行良好,但在生产中抛出上述错误。
在客户端代码中,
<script>
$(document).ready(function(){
$("#identityLinks a").on("click", function(){
value = $(this).attr("id");
if(value != "")
{
$.ajax({
url: "publish/updateUsersData.php",
type: "POST",
data: {receiverId: value},
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
dataType: "json",
success: function(data) {
//alert(data["result"]);
console.log(data["result"]);
},
error: function(xhr, textStatus, errorThrown) {
//alert(xhr +" "+ textStatus +" "+errorThrown);
console.log(xhr +" "+ textStatus);
}
});
}
});
</script>
在服务器端代码 (PHP) 中,我在 updateUsersData.php 中有以下代码:
<?php
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 01 Jan 1996 00:00:00 GMT');
header('Content-type: application/json; charset=UTF-8');
if(isset($_POST["receiverId"]))
{
$receiver_id = trim($_POST["receiverId"]);
$arr = array("result"=>$receiver_id);
echo json_encode($arr); die();
break;
}
else
{
$arr = array("result"=>"No user data received. Error!");
echo json_encode($arr); die();
break;
}
?>
您认为这是由于带有 Expire 调用的标题还是 Jquery 1.9.1 版本中的错误?当我们是以前的版本时,我没有发现这样的错误。此外,这段代码已经有 5 个月没有更新了,浏览器错误就在不久前蔓延。感谢您的所有帮助和支持。
编辑:
状态:这个ISSUE目前尚未解决。 Jquery AJAX 需要专家的帮助。任何人,请宣传这个问题。此外,CORS 不对这个问题负责。
点击出现上述错误的控制台时,我直接被带到了这一行
JQuery 1.9.1 where console error lines point to:
=> xhr.send( ( s.hasContent && s.data ) || null );
Also these ones are shown in console error mark:
=> transport.send( requestHeaders, done );
=> ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle
|| handleObj.handler )
.apply( matched.elem, args );
=> return typeof jQuery !== core_strundefined &&
(!e || jQuery.event.triggered !== e.type) ?
jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : undefined;
jquery 最新版本是否会导致此 PROVISIONAL HEADERS ARE SHOWN 错误。
【问题讨论】:
-
有任何线索可以解决这个问题或需要更多信息吗?
-
我正在回复您留下的评论 here。我认为您的问题不是“显示临时标头” 消息。据我所知,该消息并不代表错误,只是表明 Chrome 尚未收到该请求的真实标头。
-
您提到的 net::ERR_EMPTY_RESPONSE 和 Provisional Headers Sent - No actual request sent 错误应该与您的问题更相关。我们是否有可能看到您的系统正在运行?看来问题不在于代码,而在于客户端-服务器连接。
-
我在这里没有想法,所以我只想问一些简单的问题,希望能有所收获:)。您正在使用相对 URL 作为 Ajax 调用的参数。根据您的配置,该 URL 在生产和开发中可能会有不同的解释。您确定请求是在正确的位置发出的吗?
-
感谢@wvega 花时间研究这个问题。是的,正如您所说,代码中似乎没有问题。它实际上在 localhost 中运行良好,但会引发 生产中的错误。我还交叉检查了 URL,它指向正确的位置。我仍然很困惑为什么会发生这种情况。 支持这个问题(它变得更加明显)因为这对许多开发人员来说是一个麻烦,我看到很多帖子发布了类似的问题。
标签: php jquery ajax google-chrome