2013-05-26 4 views
0

У меня очень странная проблема, я думал, что это сработало раньше, но это уже не так. Я даже не помню, чтобы что-то меняя. Я попробовал с более старой библиотекой jQuery.jQuery Ajax - Cant parse json?

У меня ошибка, которая говорит: http://i.imgur.com/H51wG4G.png в строке 68: (анонимная функция). которые относятся к строке 68: var jsondata = $ .parseJSON (данные);

Это моя функция ajax Я не могу заставить мое предупреждение работать либо из-за этой ошибки. этот скрипт, кстати, предназначен для входа в систему, поэтому, если я обновляю свой сайт, я войду в систему, чтобы работать. Я также возвращаю свой json-объект хорошо, как вы можете видеть на изображении. {"success": false, "msg": "Fel anv \ u00e4ndarnamn eller l \ u00f6senord.", "redirect": ""}

Когда я получу это, я проверю login.success, == true и получить панель входа из logged-in.php.

$('#login_form').submit(function() 
{ 
    var login = $.ajax(
    { 
     url: '/dev/ajax/trylogin.php', 
     data: $(this).serialize(), 
     type: 'POST', 
    }, 'json'); 
    login.success(function(data) 
    { 
     var jsondata = $.parseJSON(data); 
     console.log(jsondata); 
     if(jsondata.success == true) 
     { 
      $.get("/dev/class/UI/logged-in.php", function(data) { 
       $(".login-form").replaceWith(data); 
      }); 
     } 
     else 
     { 
      alert(jsondata.msg); 
      $('#pwd').val(''); 
     } 
    }); 
    return false; 
}); 

спасибо.

+0

Пожалуйста, вставьте содержимое '' data' использованием console.log (данных) 'перед анализом. –

ответ

1

Если вы указали на прилагаемом скриншоте response, у вас возникнет проблема в вашем скрипте PHP, который генерирует ответ JSON. Убедитесь, что сценарий PHP, генерирующий этот ответ (или любой другой скрипт, включенный в этот файл), не использует константу с именем SITE_TITLE. Если какой-либо из этих файлов PHP должен использовать эту константу, убедитесь, что этот SITE_TILE определен где-то и включен в эти файлы.

Что могло случиться, что один из PHP файлов, участвующих в производстве по JSON ответ может измениться как-то и начали использовать SITE_TITLE Костанта без определения его первым, или без включения в файл, который содержит, что константа.

Или, может быть, ни один из файлов, участвующих в JSON поколения не изменились, но, скорее, ваши error_reporting настройки могут быть изменены и теперь, когда PHP интерпретатор выводит тексты notice уровня, когда он видит некоторую неопределенную константу.

Решение проблемы

Если константа SITE_TITLE не определена, определить его. Если константа SITE_TITLE определена в каком-либо другом файле, включите этот файл в сценарий PHP, который генерирует ответ.

В противном случае, и я не рекомендую это, настройте настройки error_reporting, чтобы игнорировать Notice.

+0

Ничего себе. все были настолько полезны. Вы были на самом деле правы, это была проблема с константой. Я не знал, что это повлияет, потому что это ошибка «Уведомление». Но теперь я понимаю, почему. Я буду отмечать это как правильный ответ. Всем спасибо. – mpj

+1

Хорошо. Рад, что это помогло. –

1

Ваш ответ недействителен JSON. Вы видите: «неожиданный токен <».

Это означает, что ваш ответ содержит неожиданный «<» и не может быть преобразован в формат JSON.

Положить a console.log(data)до преобразовать его в JSON.

0

You shoud использовать login.done(), а не login.success() :) Успех используется только в функциях ajax()! Функция объекта успеха устарела, вы можете установить успех только как параметр Ajax()!

И нет необходимости анализировать данные, поскольку он уже в формате Json!

jQuery Ajax

$('#login_form').submit(function() 
{ 
    var login = $.ajax(
    { 
     url: '/dev/ajax/trylogin.php', 
     data: $(this).serialize(), 
     type: 'POST', 
    }, 'json'); 
    login.done(function(data) 
    { 
     var jsondata = data; 
     console.log(jsondata); 
     if(jsondata.success == true) 
     { 
      $.get("/dev/class/UI/logged-in.php", function(data) { 
       $(".login-form").replaceWith(data); 
      }); 
     } 
     else 
     { 
      alert(jsondata.msg); 
      $('#pwd').val(''); 
     } 
    }); 
    return false; 
}); 
+0

Спасибо. Я использую логин, а не успех. Формат Json уже есть? Хм не знал, что это так. – mpj