mysql — Phonegap, AJAX — проблема с массивом PHP

У меня проблемы с передачей входного значения пользователя через массив из HTML (с использованием AJAX) на страницу php (при получении массива).
Является ли метод, который я использую, является правильным? Я не получил значение на моей странице 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 File для получения запрашиваемого массива со страницы 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;
}

0

Решение

использование

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

Другие решения

Когда вы делаете это, вы конвертируете свой массив 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'];
1

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