2013-07-31 1 views
0

Посмотрите на эту функцию первой, обратите внимание на файл JSon расположен локально:Запросить JSON для загрузки в объект Javascript. Различия в ответ

if (request) { 
    request.open("GET", "flicks.json", true); 
    request.onreadystatechange = function() { 
     if (request.readyState == 4) { 
      var testi = request.responseText; 
      var listmovies = JSON.parse(testi); 
      console.log(typeof testi); // THIS RETURNS STRING 
      console.log(typeof listmovies); // THIS RETURNS OBJECT - YAY! 
      } 
    }; 
    request.send(null); 
} 

Это отлично, я получил то, что хотел, объект с данными JSON в нем.

Но когда я изменил местоположение файла JSON, и я поставил его на сервере:

Затем он возвращается с этой ошибкой:

SyntaxError: JSON.parse: unexpected end of data 

Пример JSON

{ 
    "feed": "....", 
    "description": "Fake List of Netflix movies", 
    "modified": "2010-10-25T15:04:46Z", 
    "generator": "I did it", 
    "items": [ 
     { 
      "title": "...", 
      "link": "h...", 
      "media": { 
       "m": "..." 
      }, 
      "date_taken": "..." 
     }, 
     { 
      "title": "...", 
      "link": "...", 
      "media": { 
       "m": "..." 
      }, 
      "date_taken": "..." 
     } 
    ] 
} 

Почему это работает локально, но не наоборот?

+0

Можем ли мы видеть json? –

+0

Есть ли у вас какие-либо другие сообщения? Что говорит о запросе сетевой вкладки инструментов разработчика вашего браузера? Почему вы проверяете ReadyState, но не статус? – Quentin

+0

Если я добавляю request.status == 200, то он ничего не возвращает, когда я делаю console.log (и т. Д.). Он просто говорит 200 OK на консоли, ничего больше. –

ответ

0

Если вы положили: http://www.myserver.com/flicks.json в браузере, вы можете видеть данные? (Доступен ли файл). Во-вторых, уверены ли вы, что файлы идентичны (локальный или серверный)?

EDIT 1: Попробуйте это. просто небольшое изменение порядка вызовов.

if (request) { 
    request.onreadystatechange = function() { 
     if (request.readyState == 4) { 
      var testi = request.responseText; 
      var listmovies = JSON.parse(testi); 
      console.log(typeof testi); // THIS RETURNS STRING 
      console.log(typeof listmovies); // THIS RETURNS OBJECT - YAY! 
      } 
    }; 
    request.open("GET", "http://www.myserver.com/flicks.json", true); 
    request.send(null); 
} 
+0

Да, сэр, он абсолютно идентичен, и я вижу данные. Благодарю. –

+0

Прости, я в тупике. – Grallen

+0

Не беспокойтесь, сэр, я тоже, спасибо за ваше время! :) –

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