2015-04-23 3 views
0

мне нужно использовать переменную сгенерированное значение от первой функции (переменная URL), во второй функции, вот код:использование результата переменной от одной функции к другой функции

var kategorije = ["c1", "c2", "c3", "c4", "c5", "c6"]; 
var url; 

function checkbox_test() { //first function 
// calculating url ... 
alert(url); // here everything is ok, something like c1=x&c2=a&c3=5 ... 
} 

function loadXMLDoc() { // second function 
    regid = "123456abcdefg"; 
    var xmlhttp; 
    xmlhttp=new XMLHttpRequest() 
    xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
     document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
      } 
      } 
    xmlhttp.open("GET","http://www.example.com/?regId=" + regid + '&' + url, true); 
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    xmlhttp.send(); 
    alert(url); // just checking is value of url is correct! here it say url is undefined! 
} 

Мне нужно передать значение url, сгенерированный в первой функции в GET как url. Благодаря!

+0

Первый: 'checkbox_test()' должен вызываться перед 'loadXMLDoc()'; Второе: 'checkbox_test()' не может быть асинхронным, или значение не будет установлено в момент, когда 'loadXMLDoc()' читает его. – DontVoteMeDown

ответ

0

Вы должны вызвать checkbox_test() перед вашей второй функции, и когда вы назначить var url к выходу checkbox_test() после return ТРАЕКТОРИЙ url:

var kategorije = ["c1", "c2", "c3", "c4", "c5", "c6"]; 
var url; 

function checkbox_test() { //first function 
// calculating url ... 
alert(url); // here everything is ok, something like c1=x&c2=a&c3=5 ... 
return url 
} 

url = checkbox_test(); 
loadXMLDoc(url); 
function loadXMLDoc(url) { // second function 
    regid = "123456abcdefg"; 
    var xmlhttp; 
    xmlhttp=new XMLHttpRequest() 
    xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
     document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
      } 
      } 
    xmlhttp.open("GET","http://www.example.com/?regId=" + regid + '&' + url, true); 
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    xmlhttp.send(); 
    alert(url); // just checking is value of url is correct! here it say url is undefined! 
} 
+0

нет работа! в моем html у меня есть флажки с кнопкой SEND, которая запускает функцию checkbox_test(), и если я вызываю url = checkbox_test() перед второй функцией, я получаю: предупреждение о том, что флажок не установлен. – bladimir

0

В дополнение к предложениям выше, вы можете попробовать использовать ' обратные вызовы ', поток here содержит некоторые полезные материалы и примеры.

Так что в вашем контексте, вы можете использовать функцию обратный вызов, как это,

function checkbox_test(callback) { 
    // do calculation and when 'url' is available, 
    // invoke callback (which is loadXMLDoc()) 
    callback(url); 

} 

function loadXMLDoc(aValuePassedFrom_checkbox_test) { 
    // do stuffs with value (url) 
} 

// call function checkbox_test, passing in callback fn 
checkbox_test(loadXMLDoc); 

Надеется, что это помогает.

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