2013-09-17 2 views
0

У меня есть PHP скрипт, который возвращает данные из БД и создает текст JSON-стиль, похожий на этот:JQuery JSON синтаксический анализ - и ошибка

{ "company" : [ { "value" : "siemens" }, { "value" : "cocacola" } ], "order" : [ { "value" : "John" }, { "value" : "Mary" } ], "mob" : [ { "value" : "123123123" }, { "value" : "123123123" } ] } 

Я разобрать его с помощью JQuery, как это:

$.ajax({ 
     type: "POST", 
     url: dir + "get_data.php", // this on gets text you can se above 
     success: function(html){ 
      try { 
       var autocomplete = $.parseJSON(html); 
      } 
      catch(e) { 
       alert('invalid json'); 
       $('#content').append(html) 
      } 
        } 
        }) 

С течением времени он возвращает «invalid json», хотя ничего в структуре базы данных или в коде не было изменено. Раньше он работал отлично - просто отлично! Все, что изменилось, - это просто новые записи от пользователей, потому что данные - это автозаполнение полей. Моя первая мысль заключалась в том, что пользователь ввел некоторые специальные признаки, которые были корректно фитированы, т. Е. Знак котировки или фигурная скобка. Я проверил его через http://json-validator.com/ и http://jsonlint.com/ - они оба говорят, что это правильный json. Следующая идея заключается в том, что какой-то json-файл должен быть большим, чтобы его разобрать, и он разбирает его часть. У вас есть какие-то идеи, что здесь может быть неправильно?

РЕШЕНИЕ:

Некоторые пользователи вошли в базу данных таблиц знак, который был Мессинг с JSon разборе. Если у вас есть аналогичная проблема - сначала очистите БД от нее и установите какие-то фильтры для ввода данных. Удачи. Закрытие!

+0

u r right, но этот пример является только примером, написанным с нуля. скрипт возвращает json без ошибок – Kalreg

+0

Итак, вы говорите, что «invalid json» получает предупреждение и что json прошло правильно? ты уверен? – Vic

+0

Я добавил json на страницу и скопировал его на json validator - несмотря на неправильный текст json на моей странице (предупреждение). Json validator говорит, что все в порядке - это запутывает – Kalreg

ответ

0

Есть несколько вещей, которые вы можете сделать здесь:

  1. Убедитесь, что вы используете последнюю версию JQuery.

  2. Задание типа данных с помощью функций AJAX jQuery может помочь определить ошибку. Попробуйте следующий код:

    $.ajax({url: dir + "get_data.php", type: "json"}) 
        .done(function(data) { 
         var autocomplete = data; 
        }) 
        .fail(function(xhr, response, error) { 
         alert('Request failed: ' + error); 
         console.log('%o', xhr); 
         $('#content').append(response); 
        }); 
    

    Между jqXHR на объекте вошедшего в консоли и error брошенного из $.ajax, вы могли бы получить более конкретную информацию о том, почему разборе JSON пошла не так.

  3. Наконец, отметьте the documentation for jQuery.parseJSON() и убедитесь, что ни одна из проблем с символами новой строки и табуляторами не применима к вам.

Смежные вопросы