#jquery #ajax #json
#jquery #ajax #json
Вопрос:
Я создаю простой модуль для нашего старшего проекта, который проверяет, существует ли электронное письмо в базе данных. Это важный сегмент моего php-файла, который отображает форматированный JSON:
die(json_encode(array(2 => "Email already taken!")));
Для этого примера это должно возвращать = {«2», «Электронное письмо уже принято!»}
И вот код javascript (который встроен):
$(function() {
$("#signin").submit(function() {
// validate and process form here
$.ajax({
type: "GET",
url: "mailcheck.php",
data: "email=" document.getElementById('email').value,
success: function(data) {
var parsed = $.parseJSON(data);
//display message back to user here
document.getElementById('msg').innerHTML = parsed.Msg;
$("input#email").val("");
},
});
return false;
});
});
Проблема в том, что я всегда получаю ‘undefined’. В чем проблема?
Комментарии:
1. echo json_encode не умирает()
2. Разве это не
die()
отразилось бы также и на содержимом? codepad.viper-7.com/w3uR9C3.
die()
функция повторяет свое содержимое, после чего завершает работу, таким образом оставляя последующиеecho()
die()
операторы or не отображаемыми.4. если я не могу использовать
die()
, могу ли я использоватьexit;
вместо этого? Я попробовал exit, и это тоже сработало…
Ответ №1:
В вашем PHP-файле echo json_encode, как упоминал @pc-shooter. И вам не нужно анализировать JSON, если вы установили dataType: 'json',
в вызове ajax.
Вам также может потребоваться установить тип содержимого в вашем PHP-файле.
header('Content-Type: application/json');
echo json_encode(array(2 => "Email already taken!"));