使用ajax / php访问隐藏的输入数组

时间:2015-11-15 22:40:41

标签: javascript php jquery arrays ajax

我有一个包含以下几种元素的表单

<input type="hidden" name="selected_models[]" value="1">1</td>
<input type="hidden" name="selected_models[]" value="2">2</td>
<input type="hidden" name="selected_models[]" value="3">3</td>
<input type="hidden" name="selected_models[]" value="4">4</td>

我正在尝试将此数组以及所有其他表单数据传递给jQuery $ .post函数,但我无法正确访问php中的数据。

我尝试使用以下(jQuery)传递它:

var _data = { models: $('input[name="selected_models[]"]').serialize() }

然后使用以下命令在PHP中访问它:

$models = $_POST['models'];

只是为了尝试检查数据,我将此变量传递给ajax响应,并使用以下命令将其记录回控制台:

Php
$response = jseon_encode( 
    array(
        'success' => true,
        'models' => json_encode($models)
    ) 
);

JS
console.log(JSON.parse(response.models)

其中输出以下内容:

selected_models%5B%5D=37&selected_models%5B%5D=51&selected_models%5B%5D=57

所以,老实说,现在我只是坚持如何在php中循环这些值,所以我实际上可以用它们做点什么。理想情况下,我可以做类似的事情:

Php
foreach ( $models as $model ) {
    $id = $model.selected_models
    // Do more stuff
}

但这不起作用。我做错了什么?

2 个答案:

答案 0 :(得分:0)

我最终在jQuery中解决了这个问题并将解析后的值传递给PHP,而不是:

var uniqueModels = [];

if ( document.getElementById('acInheritFromVehicle').checked ) {
    var models = jQuery( 'input[name="selected_models[]"]:checked');
    var modelIDs = [];

    //console.log(models);

    models.each(function() {
        if( jQuery.inArray( ))
        modelIDs.push( jQuery(this).val() );
    });

    uniqueModels = unique(modelIDs);

    uniqueModels = jQuery.grep( uniqueModels, function(value) {
        return value != 0
    });

    //console.log(uniqueModels);
}

答案 1 :(得分:0)

你做得对,只是一些小的PHP调整,你会得到它。一旦序列化数据并发送到PHP,您始终可以使用print_r($models)函数检查该数组的外观。

要遍历$models数组,请执行以下操作:

&#13;
&#13;
foreach($models as $model) {
  echo 'Value of hidden input is: ' . $model;
  echo '<br />';
}
&#13;
&#13;
&#13;

$model将表示通过PHP请求收到的实际值。 Check out this example