2015-07-31 4 views
1

Прямо сейчас у меня есть три файла, два файла javascript и один html-файл, который будет вызывать эти два файла javascript. Внутри моего первого файла JavaScript, давайте назовем это part1.js, у меня есть это содержание:Чтение переменной внутри функции в Javascript?

var dataval; 
$.get('example.cgi', function(data){ 
    dataval = data; 
}); 

Внутри part2.js, я пытаюсь позвонить по этому dataval значение. Но он не работает, поскольку я предполагаю, что dataval находится внутри функции get и, следовательно, является локальным значением. В любом случае, я могу получить эту ценность? Мой html-файл вызывает оба этих javascripts. В любом случае я могу получить доступ к этой переменной?

Спасибо!

+0

Что находится внутри part2.js? Укажите содержимое каждого файла. –

+1

'dataval', безусловно, не является« локальным »значением в этом случае; только переменные, объявленные с ключевым словом 'var', находятся в области функций. Ваша проблема связана с ** A ** в Ajax. –

+0

О, я проверю эту ссылку Юхана. Надеюсь, моя проблема будет исправлена! – trynacode

ответ

2

Здесь возникает проблема с асинхронными вызовами. Вы должны либо использовать функцию обратного вызова, либо использовать функцию обещания jquery.

В вашем part1.js, вместо него вы должны определить функцию:

function callCgi(callback) { 
    $.get('example.cgi', callback); //Callback will receive the data. 
} 

, а затем использовать его в part2.js:

callCgi(function(data) { 
    //do something with data. 
}); 

Или с обещаниями:

function callCgi() { 
    return $.get('example.cgi'); 
} 

, а затем использовать его в part2.js:

callCgi().then(function(data) { 
    //do something with data. 
}); 
+1

Когда это очевидный обман, вероятно, лучше указать на один из вопросов, который он дублирует. К сожалению, в этом случае есть множество вариантов. –

+0

Нет проблем! Рад, что я мог бы помочь вам :) – taxicala

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