当前位置: 首页 > 知识库问答 >
问题:

PHP Jquery Ajax调用抛出网络::ERR_EMPTY_RESPONSE

吴俊晤
2023-03-14

我在页面中有以下脚本代码。当进行ajax调用时,我可以看到浏览器检查/调试器部分抛出net::ERR_EMPTY_RESPONSE错误。它在本地主机环境中工作正常,但在生产中抛出上述错误。

在客户端代码中,

<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;
}
?>

你认为这是由于带有过期调用的头还是Jquery 1.9.1版本中的错误?我们以前版本的时候没有发现这样的错误。此外,这段代码已经有5个月没有更新了,浏览器错误也在不久前出现。感谢你所有的帮助和支持。

编辑:

状态 : 此问题尚未解决。需要 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最新版本是负责此临时标头显示错误。

共有3个答案

丌官丰羽
2023-03-14

有时我的页面上也有同样的问题。我认为这是因为变量的数量或它们有多大。我有一个页面发送了大约250个变量的json,没有任何问题,但是在这个页面上发生了这个错误,而大约有1500个变量要发送。这个问题是新的。以前即使有3000个变量,每件事都没有问题。在最近的版本中,chrome和Firefox都出现了这个问题。这不是服务器端错误,因为我已经将apache配置为恢复30 Mb数据的100万变量。

笪智志
2023-03-14

因此,无论使用的语言或技术如何,都可能由于多种原因而发生这种情况。我遇到过这种情况,使用角度资源来回发送15-20个数据点的极小有效载荷。PHP,Jquery,Angular都以不同的方式处理错误,但结果归结为三件事之一。

>

  • 延迟或网络问题,我曾在连接速度极慢的情况下发生过这种情况,同样,这可能是因为路由器不好或防火墙配置不正确,或者只是在一个糟糕的网络上,或者像avast这样的程序设置了代理来保护您免受病毒侵害。

    高服务器负载,我强制服务器在压力测试中处于100%cpu,这将发生在随机调用中,因为服务器处理请求的速度不够快。这很难解决,并且确实是系统的扩展问题。

    巨大的数据集、发送的大量项目导致响应失败,通常这可以通过调整您正在使用的任何web服务器上的超时设置来解决。

  • 田翰林
    2023-03-14

    我相信您的请求在 CORS 规范下未被归类为“简单请求”:

    http://www.w3.org/TR/cors/#simple-跨源请求-0

    因为您正在为Content-Type: application/json设置响应头。

    因此,您的服务器需要处理飞行前请求,这需要在请求和响应上设置一些额外的头,以使CORS请求成功

    这里有一篇关于你需要做什么的好文章——看看“没那么简单”下面的内容:

    http://www.html5rocks.com/en/tutorials/cors/

     类似资料:
    • 问题内容: 编辑:到目前为止,所有建议的答案都没有奏效。 我正在用Django运行此呼叫。服务器第一次运行时,将返回“ n_usr”(这将更改用户文件的形式)。第二次,它只是抛出一个错误。 问题答案: 在中,您具有: 然后您有: 你得到,因为jQuery是试图序列为jQuery对象,而且它不能。它可能正在尝试调用字符串方法,并将其作为上下文传递给jQuery对象,从而导致错误。 您需要添加。

    • 下面的例子中我们通过tcpdump查看workerman-chat应用通过websocket传输的数据。workerman-chat例子中服务端是通过7272端口对外提供websocket服务的,所以我们抓取7272端口上的数据包。 1、运行命令 tcpdump -Ans 4096 -iany port 7272 2、在浏览器地址栏输入 http://127.0.0.1:55151 3、输入昵称

    • 我从来没有从谷歌得到正确的定价政策。对我来说有点困惑。我目前正在测试谷歌计算引擎,试图了解它是如何工作的。 在一个简单的例子中,当使用Cloud Laucher Wordpress时,使用VM的机器实例时,可持续的预测为449美元:1个共享vCPU+0.6GB内存(f1-micro)和标准10G磁盘。 但是想象一个例子,100人在同一时期使用从美国到美国的网络互联网出口将增加154,00美元 我的

    • 我有一个问题,由于安全原因,我无法发布完整的代码(抱歉)。我的问题的要点是我有一个服务器引导,创建如下: createMyHandlerMethod()基本上返回了< code > ChannelInboundHandlerAdapter 的扩展实现 我还有一个“客户端”侦听器,它侦听传入的连接请求,并按如下方式加载: 其中MyClientHandler又是ChannelInboundHandle

    • 我在我的公司网络上建立Docker图像时遇到了问题。我刚刚开始使用Docker,所以我有以下用于hello-world类型应用程序的Dockerfile: 当我在家里的笔记本电脑上,在我自己的无线网络上构建它时,这很好用。它拉下必要的依赖关系,并正确地构建映像。 我没有网络技术来弄清楚这里发生了什么。有人知道为什么在构建Docker容器时会出现这种奇怪的行为吗?

    • 我创建了一个lambda,它迭代给定S3 bucket中的所有文件,并删除S3 bucket中的文件。S3存储桶有大约100K个文件,我正在选择并删除大约60K个文件。我已将lambda的超时设置为最大(15分钟)超时值。lambda在几分钟后始终返回“网络错误”,尽管它似乎在后台运行了一段时间,甚至在返回错误后也是如此。你怎么能绕过这个?