【发布时间】:2018-08-29 09:35:59
【问题描述】:
问题
通过 ajax 发送的请求在控制器中为空,导致
为 foreach() 提供的参数无效
提交的大多数请求都没有问题,并且包含请求中预期的数据。该错误看似随机发生,即使复制收到错误的用户的输入,我们也无法重现该错误。
在将 Laravel Forge 从 PHP 7.0 更新到 PHP 7.1 后开始出现问题。一旦我们注意到错误,我们就降级到 PHP 7.0,但错误仍然存在。
我们所知道的
- 之间似乎没有关系
- 浏览器
- 浏览器版本
- 用户输入
- 请求通过 ajax 提交
- 控制器顶部的请求中没有数据
通过 ajax 发送数据的相关代码
简化的 HTML 格式
<form>
<label>First name:</label>
<input type="text" name="firstname">
<label>Last name:</label>
<input type="text" name="lastname">
</form>
Javascript
var signatureImageUrl = $("#jSignature").get(0).toDataURL();
$.ajax({
method: "POST",
url: "submit",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
data: {
"visit_data": $("form").serializeArray()
}
});
控制器内抛出错误的相关代码
public function submit(Request $request) {
try {
foreach ($request->input('visit_data') as $index => $visitComponent) {
// Iterates over data
}
} catch (\ErrorException $e) {
// Handles error
}
}
问题
为什么在提交ajax请求时请求随机为空?
【问题讨论】:
-
鉴于问题,您需要尝试复制问题,直到它发生,您可以从浏览器的开发人员工具中收集更多信息。
标签: php ajax laravel-forge