我有一个包含以下几种元素的表单
<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
}
但这不起作用。我做错了什么?
答案 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
数组,请执行以下操作:
foreach($models as $model) {
echo 'Value of hidden input is: ' . $model;
echo '<br />';
}
&#13;
$model
将表示通过PHP请求收到的实际值。 Check out this example