Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $.post正在将对象数组更改为数组数组_Javascript_Php_Jquery_Ajax_Http Request Parameters - Fatal编程技术网

Javascript $.post正在将对象数组更改为数组数组

Javascript $.post正在将对象数组更改为数组数组,javascript,php,jquery,ajax,http-request-parameters,Javascript,Php,Jquery,Ajax,Http Request Parameters,我试图通过ajax发布一些数据。看《斯雷恩肖特》。但jQuery会自动将对象转换为数组。这可以在screenshot2(chrome开发者工具)中看到 数据发送到$。邮政: chrome开发者工具中的数据检查: 编辑: PHP中出现问题,我希望数据属性是对象数组: 我想读取如下数据: foreach ($_POST["Data"] as $field) { if ($field->Field == "username") { ... }

我试图通过ajax发布一些数据。看《斯雷恩肖特》。但jQuery会自动将对象转换为数组。这可以在screenshot2(chrome开发者工具)中看到

数据发送到$。邮政:

chrome开发者工具中的数据检查:

编辑:

PHP中出现问题,我希望数据属性是对象数组:

我想读取如下数据:

foreach ($_POST["Data"] as $field)
{
    if ($field->Field == "username")
    {
            ...
    }
}
array(1) {
  [0]=> array(2) {
    ['Field'] => String(8) "username",
    ['Value'] => String(5) "test3"
  }
}

答案是,实际上您发送的是一个对象数组,而不是您想象的数组。以下是发送到服务器的数据示例:

{
    Operations: "Add",
    TableName: "users",
    Data: [
        {
            Field: "username",
            Value: "test3"
        },
        {
            Field: "someOtherField",
            Value: "test4"
        },
        // ...
    ]
}
如果在PHP端,您只需要一个对象数组,而不是一个包含对象数组的对象,那么您应该传递
options.Parameters.Data
,比如:

var result = $.post(url, options.Parameters.Data, // ...

PHP文档中并没有很好地阐述它,但这就是它应该如何工作的。例如,上的页面对类似数组的Cookie进行了如下说明:

如果希望为单个cookie变量分配多个值,可以将其分配为数组。例如:

PHP将其解释为数组数组,如下所示:

foreach ($_POST["Data"] as $field)
{
    if ($field->Field == "username")
    {
            ...
    }
}
array(1) {
  [0]=> array(2) {
    ['Field'] => String(8) "username",
    ['Value'] => String(5) "test3"
  }
}
您可以这样解析它:

foreach ($_POST["Data"] as $field)
{
    if ($field['Field'] == "username")
    {
            ...
    }
}
请记住,一个。换句话说,它非常适合存储随帖子传递的key=>value数据


您似乎希望
$\u POST
包含简单的对象(也称为
stdClass
),但它根本没有。PHP中的大多数SOAP助手都会给您提供简单的对象响应(这是PHP行为的典型混合)。如果确实要将每个
$\u POST[“Data”]
字段转换为对象,请参阅以获取一些想法。但这样做既昂贵又不必要。

这是一个对象数组。更具体地说,它是一个包含一个对象数组作为其属性之一的对象。对于此类问题,它可以帮助解释您实际试图获得的输出。“在PHP中出现的问题,我希望数据属性是对象数组”您的对象将是PHP中的关联数组。这是个问题吗?或者,您可以将整个数组编码为JSON。这不是答案,但对于上面的一行,
options.Parameters=options.Parameters |{}
更短,可能更高效。您可以将
$field->field
更改为
$field['field']
,问题就会解决。或者像我说的,将数据编码为JSON,他说“我希望数据属性是对象数组”,是的,以前没有。但是,无论哪种方式,它都是一个对象数组。