2014-09-26 61 views
0

我在通過HTML中的數組傳遞用戶輸入值時遇到了麻煩(使用AJAX)到php頁面(在獲取數組中)。 我使用的方法是否正確?我沒有在我的PHP頁面中獲得價值。Phonegap,AJAX - PHP Array問題

首先,我分配用戶的價值變量

var first_name = $("[name='first_name']").val(); 
var last_name = $("[name='last_name']").val(); 

然後創建它的陣列。

var MyArray = {"firstname": first_name, "lastname": last_name}; 

這裏我如何傳遞價值給外部服務器的PHP文件

$.ajax({ 
     type: "POST", 
     url: GolbalURL+"updategeneralinformation.php", 
     data: "userarray="+ MyArray, 
     dataType:'json', 
     success: function(response){ 
      if(response.success) { 
       navigator.notification.alert(
        'Ok', 
        // No need for Callback function 
        'Ok', 
        'Ok' 
       ) 
      } 
      else { 
       navigator.notification.alert(
        'Something went wrong while attempting update', 
        // No need for Callback function 
        'Atempt Fail', 
        'Try Again' 
       ) 
      } 
     }, 
     error: function(error){ 
      navigator.notification.alert(
        error, 
        // No need for Callback function 
        'Something wrong', 
        'Try Again' 
       ) 
     } 
    }); 
    return false; 

從HTML頁面檢索請求的陣列和運行PHP,MySQL的更新查詢

$get_array = $_REQUEST['userarray']; 
$query = mysql_query("UPDATE ".$db.".users SET first_name='$get_array["firstname"]', last_name='$get_array["lastname"]' "); 
mysql_query($query); 
    if (!mysql_query($query, $con)) { 
    //die('Error: ' . mysql_error()); 
    $response['success'] = false; 
} else { 
    $response['success'] = true; 
} 

回答

1

現在PHP文件的代碼使用

data: MyArray, 

data: {firstname: first_name, lastname: last_name}, 

,而不是

data: "userarray="+ MyArray, 

在服務器端

$get_array = $_POST; 

$query = mysql_query("UPDATE ".$db.".users SET first_name='" . $get_array["firstname"] . "', last_name='" . $get_array["lastname"] . "'"); 

注:請求mysql_query已過時,使用PDO或mysqli的,其以這種形式不安全(mysql_real_escape_string()缺失)

+0

阿克塞爾,感謝您的答案,但沒有工作,是我需要改變任何東西在「first_name ='$ get_array [」firstname「]」? – 2014-09-26 07:32:15

+0

是的,我編輯了我的答案,用'正確'更新mysql_query – Axel 2014-09-26 07:33:59

+0

是的,非常感謝Axel。它幫助我很多。我也可以使用這種方法來添加聲明,對吧? – 2014-09-26 07:35:06

1

您已經將您的JavaScript數組轉換成字符串時,你這樣做:

data: "userarray="+ MyArray, 

所以基本上,PHP只是得到一個字符串。 您可能要做到這一點在你的JavaScript:

var MyArray = {"firstname": first_name, "lastname": last_name}; 
data: MyArray, 

或者

data: {"firstname": first_name, "lastname": last_name}, 

而在你的PHP腳本:

$first_name = $_POST['first_name']; 
$last_name = $_POST['last_name']; 
+0

感謝用戶,阿克塞爾的答案解決了我的問題:) – 2014-09-26 07:35:35

+0

好解釋user :) – 2014-09-26 07:43:30

+1

很高興我可以幫助Shivam Pandya^_ ^ – kyo 2014-09-26 08:11:00

0
var MyArray = {"firstname": first_name, "lastname": last_name}; 
data: MyArray,