2012-09-16 132 views
1

我试图从我的selectoption s中插入数据到我的数据库表中。我的数据库表字段是id_countrycountry_name发送JavaScript数组到PHP

数据库字段id_countryselectoption值填充和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数组?

+1

不要使用mysql_ *函数。它们都被弃用,除了名称,旧的,不安全的,并且意味着与已经过时多年的mysql的版本接口。考虑切换到mysqli或PDO – GordonM

+2

发送json而不是数组 –

+2

var_dump($ _ POST); –

回答

2

尝试如下:

首先系列化你的数组,然后传递给jQuery的AJAX功能。

data.serializeArray(); 

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

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

当你想使用来获取所有sended数据必须有数据对象内部的数据成员$_POST['data']

修改:

data:data, 

分成

data:{'data':data} 

当你想发布所选选项的唯一数据,你必须构建点击处理程序中的数据对象,像这样:

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