使用Jquery Ajax发送数组

时间:2010-09-12 20:45:36

标签: php jquery

尝试从以下位置发送数组:

<select name='galaddvenn[]'  class='sel_add vl hidden' multiple='multiple'>
<option value='53'>name1</option>
<option value='352'>name2</option>
<option value='632'>name3</option>
<option value='543'>name4</option>..etc
</select>

......来自Jquery,来自:

var ar = $("select#galaddvenn").serialize();

        j.ajax({
        data: ({ar : ar}), //tried with 'ar':ar
        dataType: "html",
        type:"post",
        url: "/ajax_gal_addvenn.php",
        cache: false,

....等 到PHP:

if(isset($_POST['ar'])){
$ar = mysql_real_escape_string($_POST['ar']);
var_dump($ar);

给我:bool(假):(

我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

.serialize()自己获取一个完整的POST字符串,因此它的格式如下:

galaddvenn=53&galaddvenn=352&galaddvenn=632

所以你的电话应该是这样的:

j.ajax({
    data: ar,
    dataType: "html",
    type:"post",
    url: "/ajax_gal_addvenn.php",
    cache: false
});

然后在PHP方面,你正在寻找$_POST['galaddvenn']

You can test the output here

答案 1 :(得分:0)

mysql_real_escape_string()需要一个字符串。您不能在阵列上使用它。查看docs以获取更多信息。您应该使用循环来执行此操作:

foreach ($_POST['ar'] as $key => $element) {
    $_POST['ar'][$key] = mysql_real_escape_string($element);
}

如果您收到此类错误,则应在操作之前测试您的传入数据(例如,在应用var_dump()之前使用mysql_real_escape_string())。