2012-09-16 182 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()};