Понимание загрузки JSON конвертировать в массив Javascript - PullRequest
0 голосов
/ 25 октября 2011

У меня есть следующий JSON, который формирует карту сайта внизу HTML-страницы:

var loadPages = { 'pageData' : [
    {   
        'loadInTo'      :    '#aboutUs',
        'url'           :   'http://www.website.co.uk/aboutUs.html',
        'urlSection'    :   '#aboutUs' 
    },
    {   
        'loadInTo'      :    '#whatWeDo',
        'url'           :   'http://www.website.co.uk/whatWeDo.html',
        'urlSection'    :   '#whatWeDo' 
    },
    {   
        'loadInTo'      :    '#ourValues',
        'url'           :   'http://www.website.co.uk/ourValues.html',
        'urlSection'    :   '#ourValues' 
    },
    {   
        'loadInTo'      :    '#ourExpertise',
        'url'           :   'http://www.website.co.uk/ourExpertise.html',
        'urlSection'    :   '#ourExpertise' 
    }   
] }

Я использую это для загрузки / ajax частей других страниц, таких как:

HTML

<div id="aboutUs" class="section"></div>
<div id="whatWeDo" class="section"></div>
<div id="ourValues" class="section"></div>
<div id="ourExpertise" class="section"></div>

JS

for(i=0; i < loadPages.pageData.length ; i++){
    var current = loadPages.pageData[i];
    $(current.urlSection).load(current.url);
}

Это прекрасно работает.Однако я хотел бы хранить JSON во внешнем файле .JS, а не на странице.

Я могу загрузить файл JSON, но не могу получить его в том же формате, что и выше, вот как я подхожуэто:

window.siteMap = '';

$.ajax({
    type: "GET",
    url: 'js/siteMap.js',
    async: false,
    beforeSend: function(x) {
        if(x && x.overrideMimeType) {
            x.overrideMimeType("application/j-son;charset=UTF-8");
        }
    },
    dataType: 'json',
    success: function(data){
        siteMap = eval('(' + data + ')');
    }
});

В консоли я вижу, что файл загружен, но я могу ссылаться на данные таким же образом.Может кто-нибудь помочь показать мне, где я иду не так?Большое спасибо заранее.

1 Ответ

1 голос
/ 25 октября 2011

не проверять данные, используйте

$.parseJSON(data) 

вместо

EDIT: проверьте действительность JSON с помощью http://jsonlint.com/

$. ParseJSON вам нужно, если ваш ответ представляет собой строку

...