Синтаксический анализ JSON, сгенерированного PHP с использованием jquery, возвращает ‘undefined’

#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/w3uR9C

3. 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!"));