gpt4 book ai didi

php - jQuery post 请求中断 : Only half of post parameters arrive

转载 作者:IT老高 更新时间:2023-10-28 23:46:08 24 4
gpt4 key购买 nike

我注意到我的 LAMP 环境中有一个奇怪的现象。
在前端,我使用 jQuery 执行 AJAX 发布请求,如下所示:

$.post('save.php', {data1: d1, data2: d2, [...],  dataN: dN})

变量 d1dN 是预先使用 jQuery 从网站(例如,从文本输入、文本区域、复选框等)收集的。

save.php 文件将 post 参数 data1 带到 dataN 并在一次查询中将它们保存在数据库中。

请求大约需要 500 毫秒,并且可以正常工作除非我在请求期间更改了页面(例如通过单击链接)。

通常,我希望请求被中止和忽略(这很好)但是(这是奇怪的行为)请求似乎已完成,但只有部分数据传输并因此保存。

这意味着例如,php 脚本只保存 data1data5 并将 data6 设置为 dataN清空。
该问题似乎是由 AJAX 请求(不是 php 脚本)引起的,因为字段 $_POST['data6']$_POST['dataN'] 不是在这种情况下在 php 中设置。

所以我的问题:
为什么会发生这种情况(这是预期的行为)?
我该如何避免呢?

更新
问题既不是 jQuery 也不是 php。 jQuery 正确收集值并尝试将它们发布到 php.ini。我刚刚验证了它 - 它有效。另一方面,php 脚本会按预期处理它所获得的一切——它只是没有收到整个请求。
所以问题一定是被中断的请求本身。不像我期望的那样,它不会中止或失败,它仍然会传输所有数据,直到中断。
然后 php 获取这个帖子数据并开始处理它 - 显然缺少一些信息。

更新 2
我通过在 dataN 之后添加参数 eof 并检查它是否在 php.ini 中设置来解决了这个问题。这样我就可以确定整个请求都被传输了。
尽管如此,这并不能解决我仍然不明白的问题的根源。
对任何人有帮助吗?

最佳答案

尝试以下操作来调试问题:

  1. 检查您的 php 设置中的 post_max_size 并将其与您发布的数据大小进行比较。

  2. 用户 HTTP 请求生成器,即使用 Fiddler 发出 http 请求并检查它返回的内容。

  3. 使用 save.php 顶部的 print_r($_POST); 来检查你得到了什么。

  4. 使用 Firebug 之类的工具来检查 jQuery 发布的内容。

  5. 您还应该在客户端验证您发布的 json 对象。即 JSON.stringify(some_object);

  6. 尝试发布一些基本示例数据 { "data1":1, "data2":2, "data3":3, "data4":4, "data5":5 , "data6": 6 }

很可能您正在发送大量数据或数据可能无效!

修改:非常愚蠢的行为,但可以说您也发布了计数。所以直接检查isset($_POST['data'.$_POST['count']])

关于php - jQuery post 请求中断 : Only half of post parameters arrive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16934226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com