Javascript 对象属性在$.ajax POST请求中丢失

Javascript 对象属性在$.ajax POST请求中丢失,javascript,php,jquery,ajax,laravel,Javascript,Php,Jquery,Ajax,Laravel,我通过$.ajax上传了一个JSON格式的大数据集,在上传过程中一些属性丢失了。出于测试目的,服务器返回缺少属性的第一行 javascript php 因此,一切都正常工作,唯一的问题是,这个代码为“m0sq-p0yq”的特定元素在某处丢失了属性cust 此外,我刚刚注意到st属性也丢失了--请帮助:)您的ajax请求没有将数据编码为JSON格式,因此它试图将您的复杂数据结构作为application/x-www-form-urlencoded发送。$调用中的“json”参数不起任何作用 jQ

我通过$.ajax上传了一个JSON格式的大数据集,在上传过程中一些属性丢失了。出于测试目的,服务器返回缺少属性的第一行

javascript php 因此,一切都正常工作,唯一的问题是,这个代码为“m0sq-p0yq”的特定元素在某处丢失了属性
cust


此外,我刚刚注意到
st
属性也丢失了--请帮助:)

您的ajax请求没有将数据编码为JSON格式,因此它试图将您的复杂数据结构作为application/x-www-form-urlencoded发送。
$调用中的
“json”
参数不起任何作用

jQuery接受以下两种情况之一:

  • 第一个参数作为URL字符串,第二个参数作为设置对象
  • 第一个参数是设置对象,没有其他参数
将ajax更改为:

$.ajax({
    type: "POST",
    url: "/ordersfp/process",
    data: {
        data: JSON.stringify(data) // encode to JSON
    },
    success: function(response) {
        console.log(response);
    }
});
在PHP端,解码JSON:

$data = Input::all();
$decoded = json_decode($data['data']);
foreach ($decoded as $row) {

这样行,谢谢。虽然我仍然不明白为什么服务器会忽略某些属性(它们出现在post数据中)。所以“json”选项也应该省略,我想?是的
“json”
应该省略-忘了删除它。这些数据片段很可能根本不存在于POST数据中,您正在记录对象,该对象将始终显示所有数据,因为它是在浏览器尝试处理它之前显示的。除非使用JSON编码,否则浏览器不知道如何处理复杂结构。最好查看开发工具中的“网络”选项卡,并观察实际发送到服务器的内容。我确实查看了实际请求,并且它出现在POST数据中,我只是没有截图。我不想重复这个请求,因为我已经根据您的回答更改了代码(由于
$row
变成了一个对象而不是数组,所以不得不更改很多php代码)。但是Safari显示,
数据[58][cust]
(或任何索引)存在于提交的POST数据中。无论如何谢谢你!
$.ajax({
    type: "POST",
    url: "/ordersfp/process",
    data: {
        data: JSON.stringify(data) // encode to JSON
    },
    success: function(response) {
        console.log(response);
    }
});
$data = Input::all();
$decoded = json_decode($data['data']);
foreach ($decoded as $row) {