#javascript #php #jquery #json #ajax
#javascript #php #jquery #json #ajax
Вопрос:
У меня возникли проблемы с возвратом сообщения о состоянии из php-файла в ajax-функцию в html-файле. При переходе к отправке я получаю [Object object] на экране. Насколько я понимаю, json_encode сможет вернуть объект $answer с его значением. Я что-то здесь упускаю?
php
<?php
require_once 'dbconfig.php';
require_once('FirePHPCore/fb.php');
ob_start();
$answer = new stdClass;
if(isset($_POST))
{
$uname;
$pword;
//email = ema
$ema;
$answer->result = "successful";
$answer->text = "";
foreach($_POST as $key => $value)
{
if($key == 'u')
{
$uname = $value;
}
else if($key == 'p')
{
$pword = $value;
}
else if($key == 'em')
{
$ema = $value;
}
}
}
else
{
$answer->result = "Error";
$answer->text = "Error Message";
}
$check = mysqli_query($con, "SELECT username FROM users WHERE username = '$uname'") or die(mysql_error());
$check2 = mysqli_num_rows($check);
if ($check2 != 0) {
$answer->text = "sorry username taken";
$ansr = json_encode($answer);
echo $ansr;
die('Sorry, the username is already in use.');
}
exit(0);
?>
ajax в моем html-файле
$.ajax({
type: "POST",
url: "registration.php",
dataType: "json",
data : { u: un, p:p1, e:em },
cache: !1,
beforeSend: function(){
$("#submit").hide();
$('#status').text('please wait ...');
},
complete: function(){
$("#submit").show();
},
success: function(answer){
if(answer.result == "successful")
{
$("#status").html(answer.text);
}
else
{
$("#status").html(answer.result);
}
},
error: function(answer){
$("#status").text(answer);
}
});
любые советы или подсказки будут оценены.
Комментарии:
1. Я думаю, что ваш JSON на самом деле в порядке, но вызов ajax заканчивается
error
в ветке, которая просто распечатывает весьanswer
объект. Если вы используете$("#status").html(answer.text);
вместо$("#status").text(answer);
, вы должны увидеть правильное сообщение об ошибке.2. проверьте объект в консоли. Вам нужно выполнить некоторую базовую отладку, используя инструменты разработки, встроенные в ваш браузер
3. echo $ansr, за которым следует die (str), приведет к повреждению вашего вывода json
4. если вы используете
die(msg)
после отправки данных json, это приведет к аннулированию данных json5. @RamRaider вы правы
Ответ №1:
Спасибо @RamRaider! Использование die() сразу после использования json_encode сделало данные недействительными.