2012-01-30 30 views
0

私は2つのインラインJavaスクリプト関数を持っています.1つはxhrを使ってトークン値を取得し、もう1つはその値を使ってサーバーからの完全な応答を取得します。しかし、サーバーにアップロードしたときに何も起こりませんでした。このapparoachと間違って何取得した値をjavascript関数から別のjavascript関数に自動的に渡しますか?

function getUser(user) 
     { 


    var xmlhttp; 
    var result,x,i; 
    var uservalue=user; 
    var url="http://abc.xyz.com:8090/uauth/" +uservalue; 
    ///here starts the getToken method.. 
    var tokensave=function getToken(uservalue) 
        { 
        var xmlhttp; 
        var token,a,b; 
        var url="http://abc.xyz.com:8090/uauth/" +uservalue; 
        var data="op=login&pass=" +uservalue; 


        if (window.XMLHttpRequest) 
         {// code for IE7+, Firefox, Chrome, Opera, Safari 
         xmlhttp=new XMLHttpRequest(); 

           if (xmlhttp==null) 
            { 
            alert ("Browser does not support HTTP Request"); 
            return; 
            } 

         } 
        else 
         {// code for IE6, IE5 

          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
         } 

        xmlhttp.open("POST",url, true); 

        xmlhttp.onreadystatechange=function() 
         { 

           if (xmlhttp.readyState==4 && xmlhttp.status==200) 
            { 

            xmlDoc=xmlhttp.responseXML; 
            token=""; 
            a=xmlDoc.getElementsByTagName("token"); 

            token=token + a.childNodes.nodeValue; 

             document.getElementById("myDiv").innerHTML=token; 
            } 
          }; 

        xmlhttp.setRequestHeader("Content-Type", "text/xml"); 
        xmlhttp.send(data); 
        return token; 

       } 


    var header="Xyz-Authorization: "+tokensave; 


        if (window.XMLHttpRequest) 
         {// code for IE7+, Firefox, Chrome, Opera, Safari 
         xmlhttp=new XMLHttpRequest(); 

        if (xmlhttp==null) 
         { 
         alert ("Browser does not support HTTP Request"); 
         return; 
         } 

         } 
        else 
         {// code for IE6, IE5 
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
         } 

         xmlhttp.open("GET",url, true); 

    xmlhttp.onreadystatechange=function() 
         { 
          if (xmlhttp.readyState==4 && xmlhttp.status==200) 
           { 

           xmlDoc=xmlhttp.responseXML; 
           result=""; 
           x=xmlDoc.getElementsByTagName("response"); 
           for (i=0;i<x.length;i++) 
            { 
            result=result + x[i].childNodes[0].nodeValue + "<br />"; 
            } 
           document.getElementById("myNewDiv").innerHTML=result; 
           } 
         }; 

    xmlhttp.setRequestHeader("Xyz-Authorization: ", +tokensave); 
    xmlhttp.send(); 


} 
    HTML CODE: 
    <div id="myDiv"></div> 
    <br /> 
    <br /> 
    <div id="myNewDiv"></div > 
    <br /> 
    <form> 
    <input name="textbox" id="textbox" type="text" /> 
    <input name="buttonExecute" onclick="getUser(document.getElementById('textbox').value)" type="button" value="Get User" /> 
    </form> 

:ここ

は、サンプルコードを行きますか?あなたの貴重な助けを事前に

おかげで...あなたが最初の関数でreturn tokenを使用して、ちょうどグローバル変数を作成し、あなたが設定されたこのgetUser(getToken(user))

+0

Plsはjqueryの使用のために必要がないの提案を... – mrana

+0

あなたはAJAXリクエストが成功したら、最初の関数に第2の機能をネストしようとすると、引数として値を渡すことができます。 –

+0

バラありがとうございました.. – mrana

答えて

0

関数内の値を変更しますが、必要なすべての関数についてはグローバルスコープから引き続きアクセスできます。

var data = false; 

function getData() { 
    // some ajax... 
    data = {cool:true}; 
} 

function foo() { 
    if(data.cool) { 
     alert (data.cool) 
    } 
} 
0

ようにそれを使用する必要が
mrana