【问题标题】:Cannot send array to php via AJAX?无法通过 AJAX 将数组发送到 php?
【发布时间】:2019-06-22 15:06:36
【问题描述】:

好吧,我关注了this 的问题,但无法将数组发送到 php,它返回的总是空的:

JS:

            values = [];
            values['mpsRegnomer'] = $('#mpsRegnomer').val();
            values['mpsMarka'] = $('#mpsMarka').val();
            values['mpsMarkaOther'] = $('#mpsMarkaOther').val();
            values['engineType'] = $('#engineType').val();
            values['seatNumberInput'] = $('#seatNumberInput').val();
            values['carColor'] = $('#carColor').val();
            values['mpsChassiNum'] = $('#mpsChassiNum').val();
            values['mpsModel'] = $('#mpsModel').val();
            values['mpsModelOther'] = $('#mpsModelOther').val();
            values['mpsManufactureDate'] = $('#mpsManufactureDate').val();
            values['mpsfor'] = $('#mpsfor').val();
            values['VehicleType'] = $('#VehicleType').val();
            values['dvigatelInput'] = $('#dvigatelInput').val();
            values['engineMaxPower'] = $('#engineMaxPower').val();
            values['is_automatic'] = $('#is_automatic').val();
            console.log(values);

            $.ajax({
                    type: 'POST',
                    url: 'assets/clients/services/saveDataMPS.php',
                    async: false,
                    dataType: "JSON",
                    data: {"values": JSON.stringify(values)},
                    success:function(response){
                        alert(1);
                    }
            });

console.log(values) 告诉我数组没问题。

PHP 代码:

<?php

var_dump(json_decode($_POST["values"])); exit; 

它返回我总是空的,也只尝试var_dump($_POST); 相同的结果..我错在哪里?

来自console.log(values)的结果:

【问题讨论】:

  • 你不需要JSON.stringify(values),而是data: { values: values }
  • 你能在问题中添加 JSON.stringify 值吗
  • @Cid 与 data: {"values": values}data: {values: values}var_dump($_POST) 仍然为空

标签: javascript php jquery ajax


【解决方案1】:

您将values 定义为一个数组,因此当您对它进行字符串化时,您会得到一个空数组。将其定义为values = {}; 之类的对象,它将起作用。

你不会在 javascript 中使用关联数组,因为

如果你使用命名索引,JavaScript 会将数组重新定义为 标准对象。之后,一些数组方法和属性将 产生不正确的结果。

这就是为什么你需要在一开始就将它定义为对象。

values = {};
values['mpsRegnomer'] = $('#mpsRegnomer').val();
values['mpsMarka'] = $('#mpsMarka').val();
values['mpsMarkaOther'] = $('#mpsMarkaOther').val();

这是一个有效的 JSFiddle。 http://jsfiddle.net/pk97fe0b/

【讨论】:

  • 你是对的,它适用于对象,但我如何让 ti 与数组一起使用?
  • 为什么需要它是一个数组而不是一个对象? javascript 中的关联数组是对象,您为此目的使用对象。 If you use named indexes, JavaScript will redefine the array to a standard object. After that, some array methods and properties will produce incorrect results.
  • 我不需要它,我只是好奇:)
猜你喜欢
  • 2022-06-17
  • 2010-09-22
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多