Я использую ajax-запрос к php-скрипту, чтобы зарегистрировать нового пользователя, он работает и сохраняет его в базе данных, но возвращает как ошибку, а не как успех.
Это мой запрос AJAX:
$.ajax({
type: "POST",
url: "http://localhost/webAPI/register.php",
data: dataString,
crossDomain: true,
cache: false,
success: function (data) {
if (data == 1)
alert("success");
else(data == 0 )
alert("error");
},
error: function (){
alert("An Error Ocurred");
}});
и это мой скрипт php:
if($_POST)
{
$user_name = $_POST['username'];
$user_password = $_POST['password'];
$joining_date = date('Y-m-d H:i:s');
//password_hash see : http://www.php.net/manual/en/function.password-hash.php
$password = password_hash( $user_password, PASSWORD_BCRYPT, array('cost' => 11));//if($count==0){
$stmt = $db_con->prepare("INSERT INTO users(username,password,joiningdate) VALUES(:uname,:pass,:jdate)");
$stmt->bindParam(":uname",$user_name);
$stmt->bindParam(":pass",$user_password);
$stmt->bindParam(":jdate",$joining_date);
if($stmt->execute())
{
echo 1;
}
else
{
echo 0;
}
}
заменить else (данные == 0) на else
$.ajax({
type: "POST",
url: "http://localhost/webAPI/register.php",
data: dataString,
crossDomain: true,
cache: false,
success: function (data) {
if (data == 1)
alert("success");
else
alert("error");
},
error: function (){
alert("An Error Ocurred");
}});
и в коде PHP
if($stmt->execute())
{
exit(1);
}
else
{
exit(0);
}
Вы можете проанализировать ответ PHP в JSON, чтобы проверить результат из JS.
Ответ PHP:
if ($stmt->execute()) {
die(json_encode(['return' => true]));
} else {
die(json_encode(['return' => false]));
}
А из JS просто проверьте return
флаг:
$.ajax({
type: "POST",
url: "http://localhost/webAPI/register.php",
data: dataString,
dataType: 'JSON', // tell JS that the PHP response is json formated
crossDomain: true,
cache: false,
success: function (data) {
if (data.return) { // check if return is true
alert("success");
} else { // if return is false
alert("error");
}
},
error: function (jqXHR, textStatus, errorThrown){
console.log(textStatus, errorThrown); // this will tell you more in case of unsuccessful request
}
});
Надеюсь, поможет.
Посмотри на Аякс error
функция атрибута. Он должен рассказать вам больше об ошибке.
dataString
Вы отправляете в PHP должен быть объект JSON. Так что из вашего комментария это должно выглядеть так:
var dataString = {
username: $("#username").val(),
password: $("#password").val()
};
Что касается моего вопроса, который я задал пару дней назад об ajax, я обнаружил, что если я удаляю тег формы из файла html, он работает просто отлично, и это возвращает функцию обратного вызова. Спасибо всем за ваши усилия в попытке помочь