【问题标题】:Undefined index error if any element is empty如果任何元素为空,则未定义的索引错误
【发布时间】:2017-05-20 21:29:40
【问题描述】:

我在 angularjs 中单击即可发送 5 个输入值。数据作为对象的对象发送。例如

Object{0:Object, 1:object, 2:Object .., 5:Object}.

每个对象都有两个输入,分别是名字和姓氏。用户可以发送任何输入对。

我将此作为发布请求发送。现在在后端,我正在使用 Laravel。我将这个对象存储在一个变量中 `$x=$request->input('data');

我为每个将创建新记录的对象循环它。

我面临的问题: 如果发送了所有对象,则它会正确地将数据保存在数据库中。 但如果其中一个对象为空,则 Empty 表示如果使用仅输入第二个输入和第三个输入而将第一个、第三个和第五个输入留空。

然后 laravel 在第一个对象上抛出未定义索引的错误,它没有收到第一个请求的任何名字或姓氏。那么我该如何解决这个问题。我希望它应该更新它收到的字段。

【问题讨论】:

  • @Mohammad:请显示您保存失败时发送的请求json

标签: arrays object laravel-5 undefined


【解决方案1】:

看来你需要在持久化之前过滤掉空对象。

$data = $request->input('data');
$dataToSave = [];
foreach ($data as $value) {
    if (!empty($value)) {
        $dataToSave[] = $data;
    }
}
// persist $dataToSave with your logic

最好将您的 firstnamelastname 更改为 nullable 以便接受 null

【讨论】:

  • @humbledust 方式对我有用。谢谢期待。
【解决方案2】:

检查 ajax 函数中的输入值并仅传递这些键值

【讨论】:

  • 在 laravel 中没有其他方法可以处理这个问题吗??
  • 你必须打印发布的数据,你会得到数组格式,因此你会明白为什么循环会给出未定义的索引错误;
猜你喜欢
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 2011-04-23
相关资源
最近更新 更多