我正在保存像这样的数组
<input type="hidden" value="Array ( [0] => cb_05 [1] => cb_06 [2] => cb_07 [3] => cb_08 [4] => cb_09 [5] => type ) " id="price_id" name="price_id">
我需要抓住数组并通过jquery中的帖子发送它
var price_id = $("#price_id").val();
$.post("class.php",{price_id:price_id},function(data){
alert(data);
});
当我在课堂上做foreach时,它不会将其视为一个数组,我认为这是因为它是作为一个字符串发送的,有没有办法解决这个问题?
答案 0 :(得分:2)
您可以使用data-
属性和jQuery data()
方法来处理数组
<anyElement id="price_id" data-priceArray="<?php echo json_encode($array) ?>"/>
<!-- will look like-->
<anyElement id="price_id" data-priceArray="["1","2","3","4"]"/>
JS
var price_id = $("#price_id").data('priceArray');
/* is now a js array*/
alert(price_id[3])
$.post("class.php",{price_id:price_id},function(data){
alert(data);
});
答案 1 :(得分:0)
php不会自动识别来自print_r()的字符串作为数组。您需要使用特定的函数将数组序列化为php可识别的内容。 json_encode()
是一个很好的功能。
但是,json_encode()
可能会产生一个字符串,其中会有引号和其他字符会破坏你的html,所以我们需要再次使用没有这些字符的编码对其进行编码。我们使用base64_encode()
。
<input type="hidden" value="<?=base64_encode(json_encode($source_array))?>" id="price_id" name="price_id">
稍后,当您收到ajax或表单帖子时
$reified_array = json_decode(base64_decode($_POST['price_id']));
foreach ($reified_array as $val) { ... }