将JavaScript数组发送到PHP

时间:2012-09-16 08:37:27

标签: php jquery ajax

我正在尝试将selectoption中的数据插入到我的数据库表中。我的数据库表字段为id_countrycountry_name

数据库字段id_countryselect option值填充,country_name来自相应的option文本。 代码是这样的..

<select id="id_country" name="id_country">
  <option value="17" >USA</option>
  <option value="16" >Canada</option>
  <option value="7" >France</option>
</select>

<script>
$(document).ready(function(){
    var data=new Array();
        $('#id_country').find('option').each(function() {
            var id=$(this).val();
            data[id]=$(this).text();

        });     

    $('#btn_insert').click(function(){
        $.ajax({
            type: "POST",
            url: "ajax.php",
            data: data,
            success: function(response){
                alert(response);
            }
        });                                     
    });

});
</script>   

服务器端脚本:

<?php
     //echo $_POST['data'];
    $arr=$_POST['data'];
    foreach($arr as $key => $value){
       $sql="INSERT INTO Country($key,$value)";
       $query=mysql_query($sql);
       if(mysql_num_rows($query)>0){
          echo "success";
       }
     }
?>

我无法获得$_post['data']价值。如何在PHP脚本中获取Javascript数组?

2 个答案:

答案 0 :(得分:2)

尝试如下:

首先序列化你的数组,然后传递给jquery ajax函数。

data.serializeArray();

在PHP脚本中,在文件的开头,

$arr = json_decode($_POST['data'], true);

答案 1 :(得分:1)

当您想使用$_POST['data']

获取所有已发送数据时,数据对象中必须有数据成员

改变这个:

data:data,

data:{'data':data}

如果只想发布所选选项的数据,则必须在click-handler中构建数据对象,如下所示:

var data={'id_country':$('option:selected','#id_country').val(),
          'country_name':$('option:selected','#id_country').text()};