2017-02-14 7 views
-3

Я получаю массив объектов, выглядящий так: Прошу прощения, это на голландском языке, это не должно быть проблемой, но это выглядит немного неуместно.Невозможно установить глобальную переменную javascript

{ 
    "data": [ 
    { 
     "title": "Dit is een excercise", 
     "application": "afbeeldingVerhalen", 
     "language": "nl_NL", 
     "id": "", 
     "image": "groot.jpg" 
    }, 
    { 
     "objAudio": "groen.mp3", 
     "objImage": "groen.jpg", 
     "objText": "Dit is groen", 
     "objLocation": { 
     "X": "61", 
     "Y": "78" 
     } 
    }, 
    { 
     "objAudio": "pijl.mp3", 
     "objImage": "", 
     "objText": "Dit is een pijl. $%$%%", 
     "objLocation": { 
     "X": "61", 
     "Y": "78" 
     } 
    }, 
    { 
     "objAudio": "groot.mp3", 
     "objImage": "", 
     "objText": "Dit is groot!", 
     "objLocation": { 
     "X": "61", 
     "Y": "78" 
     } 
    }, 
    { 
     "objAudio": "wit.mp3", 
     "objImage": "wit.jpg", 
     "objText": "Dit is wit, wit is een kleur net zoals groen.", 
     "objLocation": { 
     "X": "61", 
     "Y": "78" 
     } 
    }, 
    { 
     "objAudio": "uit.mp3", 
     "objImage": "uit.jpg", 
     "objText": "Dit is buiten het plaatje, we noemen dit ook wel uit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. At enim hic etiam dolore. Quis Aristidem non mortuum diligit? Cur deinde Metrodori liberos commendas? Quod si ita se habeat, non possit beatam praestare vitam sapientia. Primum in nostrane potestate est, quid meminerimus? Verba tu fingas et ea dicas, quae non sentias? Duo Reges: constructio interrete. Tum Quintus: Est plane, Piso, ut dicis, inquit. Summus dolor plures dies manere non potest?", 
     "objLocation": { 
     "X": "61", 
     "Y": "78" 
     } 
    } 
    ] 
} 

Я использую $ .get для получения этой информации. в пределах $ .get я могу console.log (js_data ['data'] [0] .title), который выводит «Dit is een excercise», но если я console.log, то вне $ .get я получаю undefined.

Я объявлял переменные за пределами $ .get просто var title; вне функции.

Я думаю, что также хорошо отметить, что в консоли нет ошибок.

Заранее благодарен! Edit:

$(document).ready(function(){ 
    var js_data; 
    var title; 
    $.get("exercise.php", function(data){ 
     js_data = $(data).filter('.js_data'); 
     js_data = js_data.text(); 

     js_data = JSON.parse(js_data); 
     console.log(js_data); 
     console.log(js_data['data'][0].title); 
     title = js_data['data'][0].title; 
     }); 
    console.log(title); 
    $("#title").text(title);  
}); 
+2

Можете ли вы разместить сценарий, в котором вы используете $ .get? – patrick

+0

Как сказал [tag: patrick], просто отправьте код – LS05

+1

, у вас есть смешанные данные в вашем массиве, один с титром, а остальное без него. –

ответ

1

Ajax запросы работают асинхронно. В точке, где вы используете

console.log(title); 
$("#title").text(title); 

, запрос еще не завершен, поэтому переменная title еще не установлено на содержание Аякса результата.

+0

Благодарим вас за ответ. Итак, как мне это исправить? – Soshiro

+1

См. Связанные дублированные вопросы. Но тем не менее, позвольте мне ответить на ваш вопрос другим вопросом: почему бы просто не поместить '$ (« # title »). Text (title);' в обратном вызове запроса на получение? – Connum

+0

Успешный обратный вызов можно использовать в случае асинхронного поведения. – Niraj

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