php通过ajax从输入值发送数组

时间:2012-12-25 21:23:05

标签: php jquery

我正在保存像这样的数组

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

2 个答案:

答案 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) { ... }

json_decode
json_encode
base64_encode