Phonegap,AJAX - PHP数组问题

时间:2014-09-26 07:19:39

标签: php mysql arrays ajax cordova

我通过HTML中的数组传递用户的输入值(使用AJAX)到php页面(In fetching Array)时遇到麻烦。 我使用的方法是否正确?我在PHP页面中没有获得价值。

首先,我将用户的值分配给变量

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;

现在PHP文件代码用于从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;
}

3 个答案:

答案 0 :(得分:1)

使用

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()缺失)

答案 1 :(得分: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'];

答案 2 :(得分:0)

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