Я создаю приложение для телефона, используя PhoneGap с PHP на стороне сервера.функция входа в систему работает нормально, но AJAX возвращает ошибку [объект Object], а PHP возвращает правильное значение в JSON.
для создания приложения для телефона для существующего веб-сайта и использования его базы данных.данные, которые печатает мой PHP, верны, но я получаю сообщение об ошибке от ajax.Alert (response)
Дает возвращаемое значение [object Object] при ошибке
всякий раз, когда я пытаюсь использовать alert (response.val), я странным образом получаю неопределенное значение, но в сети я вижу, что напечатанные данные верныв JSON.
{{"user_id":"390","response":"Success"}}
, но когда я смотрю в консоли в браузере, я вижу неожиданную ошибку.
Unexpected parameter ':'
моя функция ajax выглядит следующим образом
$(document).ready(function () {
$("#btnLogin").click(function () {
var gebr = $("#login_username").val().trim();
var pass = $("#login_password").val().trim();
var dataString = "username=" + gebr + "&password=" + pass + "&login=";
var msg = "";
$("#message").html("Authenticating...");
if (gebr != "" && pass != "") {
$.ajax({
type: "POST",
data: dataString,
dataType: "json",
//contentType: "application/javascript",
crossDomain: true,
url: "http://url/page/app/index.php?&jsoncallback=?",
headers: "application/json",
success: function (response) {
var user_id = response.user_id;
var success = response.response;
localStorage.setItem("user_id", user_id);
window.location = "home.html";
alert("login successfull");
},
error: function (response) {
$("#message").html("error..");
alert(response);
}
});
} else {
msg = "Please fill all fields!";
$("#message").html(msg);
}
return false;
});
PHP
header('Content-type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
$gebruikersnaam = $_REQUEST['username'];
$wachtwoord = md5($_REQUEST['password']);
$user = [];
//if user and password are filled
if (!empty($gebruikersnaam) && isset($wachtwoord)) {
//checks if user_id has been found
if (!$found_user_id) {
$msg = "user not found!";
print json_encode($msg);
} else {
if (($gebruikersnaam == $user['gebruikersnaam'] && $wachtwoord == $user['wachtwoord']) && ((!empty($user['single_allowed_ip_address_for_login']) && $user['single_allowed_ip_address_for_login'] == $_SERVER['REMOTE_ADDR'])|| empty($user['single_allowed_ip_address_for_login']))) {
//responds with this data
$user_id = $user['user_id'];
$response[] = array(
'user_id' => $user_id,
'response' => 'Success'
);
print json_encode($response);
} else {
$msg = "user is incorrect";
print json_encode($msg);
}
}
}
Я хотел получить успешный ответ и сохранить user_id в локальном хранилище, чтобы его можно было использовать на другой странице.
Редактировать: после использования console.log в ответе я получил нечетный объект.
abort: function abort()
always: function always()
catch: function catch()
done: function add()
fail: function add()
getAllResponseHeaders: function getAllResponseHeaders()
getResponseHeader: function getResponseHeader()
overrideMimeType: function overrideMimeType()
pipe: function pipe()
progress: function add()
promise: function promise()
readyState: 4
setRequestHeader: function setRequestHeader()
state: function state()
status: 200
statusCode: function statusCode()
statusText: "load"
then: function then()
<prototype>: {…
, что странно, потому что ни одна из этих функций не выполнена, и единственное, что я могу распознать, этокод состояния.