1

我正在保存这样的数组

<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 时,它不会将其视为数组,我认为这是因为它是作为字符串发送的,有没有办法解决这个问题?

4

2 回答 2

2

您可以使用data-属性和 jQuerydata()方法来处理数组

<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);
});
于 2012-12-25T21:39:36.100 回答
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) { ... }

json_decode
json_encode
base64_encode

于 2012-12-25T21:27:40.160 回答