2012-01-17 2 views
0

다음은 서버의 응답입니다 (google chrome rest-client).xhr을 (를) 사용하여 JavaScript 코드가 작동하지 않습니까?

다음은 일부 데이터를 Google 서버에 게시하는 데 사용하는 코드입니다. xml 출력으로 데이터를 되돌리고 싶습니다. 동일한 원산지 정책의 개념을 염두에두면이 코드를 HTML 페이지로 서버에 업로드했지만 응답을받지 못했습니다.

내 코드에 문제가 있습니까? 아니면 내 접근 방식이 잘못 되었습니까? 페이지가로드되면서 AJAX 호출을 위해, 당신은 같은 호스트 이름 (포트/계획)에 액세스 할 수 있습니다 :

<html> 
<head> 
<script type="text/javascript"> 
function getToken() 
{ 
var xmlhttp; 
var txt,x,i; 


if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

alert("stage 1"); 
xmlhttp.onreadystatechange=function() 
    { 
    alert("stage 2"); 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     alert("stage 3"); 
    xmlDoc=xmlhttp.responseXML; 
    txt=""; 
    x=xmlDoc.getElementsByTagName("token"); 
    alert("stage 4"); 
     for (i=0;i<x.length;i++) 
     { 
     txt=txt + x[i].childNodes[0].nodeValue + "<br />"; 
     } 
     document.getElementById("myDiv").innerHTML=txt; 
    } 


    } 
alert("stage 5"); 
xmlhttp.open("POST","http://abc.mysite.com:9090/myapi/xxx",true); 
xmlhttp.send("op=login&pass=xxx"); 
} 
</script> 
</head> 

<body> 



<center><h2>UserPreview:</h2></center> 
<br /> 
<div id="myDiv"></div> 
<br /> 
<button type="button" onclick="getToken()">GetToken</button> 
<div data-role="footer" data-position="fixed" data-theme="a"><h4>Ver: 1.1(17112)</h4> </div> 
</body> 
</html> 

<response><token>8768768768768768</token></response> 
+1

왜 jQuery를 사용하지 않습니까? 이렇게하면 모든 게시가 훨씬 쉬워집니다! –

+0

dojo/jQuery를 사용할 수 있습니다. 아약스를 사용하는 함수가 있습니다! –

+0

@mrana, 내 대답을 읽고 시도해 보셨습니까? – netadictos

답변

2

당신은 것을 고려해야한다. 항상 같은 도메인과 같은 PORT : 나는 IE 버전이 사용 과거

How exactly is the same-domain policy enforced?

, 나는 가능한 호환성 문제에 대한 가정 :

try { 
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
        } 
        catch(e) 
        { 
         try 
         { 

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

         }catch(e){} 

난 항상 코드를 넣어 like :

var THEURL="http://mysite.abc.com:8080/myapi/xxx" 
var data="op=login&pass=xxx"; 
http.open("POST",THEURL, true); 

http.onreadystatechange = function(){ 

}; 
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
xmlhttp.setRequestHeader("Content-length", data.length); 
xmlhttp.setRequestHeader("Connection", "close"); 
xmlhttp.send(data); 

jquery를 사용할 수 없습니까? 훨씬 더 효율적입니다. 예를 들어 http://api.jquery.com/jQuery.ajax/

:

$.ajax({ 
    url: "test.html", 
    context: document.body, 
    success: function(){ 
    $(this).addClass("done"); 
    } 
}); 

은 빨리 당신이 jQuery를 사용하는 빨리 작업이 빠르게 얻을 것이다

는 아약스 전화를 걸려면.

0

XML 파일에 토큰라는 요소는 XML 요소이며, 속성이 다음으로 다음 줄을 교체하지 않으면 -

txt += (window.ActiveXObject)?x[i].childNodes[0].text : x[i].childNodes[0].textContent; 
내가하지 않았다 -

txt=txt + x[i].childNodes[0].nodeValue + "<br />"; 

로 XHR이 XML을 적절하게 반환 하는지를 물어보십시오.

관련 문제