2013-02-28 5 views
0

У меня возникла небольшая проблема. Я пытаюсь получить доступ к файлу JSON, используя вызов jQuery $.ajax, который я дважды проверял онлайн, и мой код JSON действителен. Когда я делаю вызов, он выдает ошибку синтаксического анализа с ошибкой синтаксиса в JSON.

Вы можете найти ошибку, посетив http://michael-nolan.com/

Вот мой JavaScript:

$(document).ready(function() 
{ 
    $.ajax(
     { type: "GET", 
      url: 'projects/projects.json', 
      dataType: "json", 
     success: function(results) 
     { 
      console.log("Success!"); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) 
     { 
      console.log(textStatus); console.log(errorThrown); 
     } 
    }); 
}); 

и вот мой JSON

{ 
    "projects": 
    [ 
     { 
      "title":"Adobe Suite", 
      "description":"Some stuff", 
      "imgsrc":"img/adobe_suite_description.png" 
     }, 
     { 
      "title":"Gridlock", 
      "description":"Stuff", 
      "imgsrc":"img/gridlock_description.png" 
     }, 
     { 
      "title":"Open Cart", 
      "description":"more stuff", 
      "imgsrc":"img/opencart_description.png" 
     } 
    ] 
} 
+1

Вы использовали Fiddler (http://www.fiddler2.com/fiddler2/), чтобы убедиться, что сервер отправляет то, что вы ожидаете? –

+0

Вы можете показать ошибку? Также, как и tmack, попробуйте его http://jsfiddle.net/, чтобы вы могли воспроизвести его, и мы можем это увидеть. http://jsfiddle.net/vqagE/ отлично разбирается. Ничего себе извините, совсем другое. Я должен буду это проверить. – John

+0

@John Я обновил свой вопрос со ссылкой на веб-сайт о том, что проблема происходит. – Nolski

ответ

1

ошибка имеет что-то делать с пробелами (вероятно, символ новой строки) между этими двумя пунктами в вашем второго элементе массива

...in the game.</p> 
    <p>Gridlock... 
^ 
| 
the problem 
+0

См. Мой ответ на решение. Просто замените вкладку '\ t' и newline на' \ n' –

-1

Ошибка после входа звучит как его проблемы с ваш json. Попробуйте переключить [ ] на {} в вашем json.

+0

Проблема в том, что проекты должны быть массивом. Кроме того, установка его на '{}' приведет к аннулированию файла JSON. – Nolski

0

Я проверил ваш код и его работу для меня, и я также пробовал его на вашем сайте и дал 304 not modified.

Так что попробуйте использовать getJson() Метод jQuery.

$.getJSON('projects/projects.json', function(data) { 

}); 
+0

Когда я использую '$ .getJSON()' Не похоже, что он выполняет обратный вызов. Когда я смотрю на скрипача, он все еще бросает 304 – Nolski

0

Ваш код работал нормально, когда я его тестировал. В зависимости от того, что является синтаксической ошибкой, я могу проверить, как создается json, и если переход к проектам/projects.json корректно создает json. Если json создан, попробуйте заменить его статическим json и посмотрите, работает ли он.

2

Работает отлично в Chrome, IE особенно строг с JSON (из всех вещей).

Остерегайтесь новой строки в своих 2-м и 3-м описаниях. Я подозреваю, что это не работает в IE.

+0

Это определенно вызывает проблему. Благодаря! – Nolski

0

Есть вкладки и переводы строк в вашем JSON, что приводит к анализатору на провал , Заменить каждый экземпляр вкладки с \t и новой строки с \n Например:

Пример JSON файла:

{ 
    textWithTabs : "This is text with \t a tab and \n newline" 
} 

JavaScript:

var o = JSON.parse(json); 

console.log(o.textWithTabs); //This is text with  a tab and ↵ newline 
0

Я хотел бы предложить вам попробовать это:

{ 
"projects": [ 
    { 
     "title": "Adobe Suite", 
     "description": "<p>With years of experience using the Adobe Suite products I have skills that range from creating vector artwork in Adobe Illustrator, arranging web layouts in Adobe Photoshop, and creating print layouts in Adobe InDesign</p>", 
     "imgsrc": "img/adobe_suite_description.png" 
    }, 
    { 
     "title": "Gridlock", 
     "description": "<p>In my Sophomore year in college I worked with Jayson Fitch as an artist on a isometric 2d shooter called Gridlock. We as a team created all of the art assets that are being used in the game.</p><p> Gridlock is still in development and we hope to release it on the OUYA.Check out it's development blog here. <a href='http://gridlock-game.tumblr.com'>www.Gridlock-Game.Tumblr.com</a></p>", 
     "imgsrc": "img/gridlock_description.png" 
    }, 
    { 
     "title": "Open Cart", 
     "description": "<p>As a freelance project I initiated an overhaul of the Legendary Realms Terrain e-commerce storefront. This entailed a complete visual re-branding as well as creating a backend solution to expand online payment options.</p><p> Feel free to check them out at < a href = 'lrterrain.com' > Legendary Realms Terrain < /a></p > ", 
     "imgsrc": "img/opencart_description.png" 
    } 
    ] 
}