2013-04-05 2 views
2

작은 페이지를 만들려고했는데 원본 문서에서 일부 값을 업데이트하는 것뿐입니다. 페이지가 제대로로드되지만 요청한 소스에서 결과를 얻지 못합니다. .fail 함수가 실행되지만 textStatuserrorThrown 값이 팝업되는 alert() 창에 표시되지 않습니다.이 jquery.get 함수가 작동하지 않는 이유는 무엇입니까?

저는 javascript와 jquery에 새로 도입되었습니다. 나는 그것을 발견하기 위해 웹에서 발견 된 조각들과 함께 이것을 부수기 위해 노력하고 있지만 아무것도 작동하지 않는 것처럼 보인다. 주로, 그것이 내가에 떨어지는 것 같아요 응답 ... 어쨌든

이야, 여기에 코드입니다 :

<html> 
    <head> 
     <title></title> 
     <script type="text/javascript" src="~/Scripts/jquery-1.9.1.js"></script> 

    <script type="text/javascript"> 

    function update() { 
     $.ajax({ 
     type: "GET", 
     url: "http://192.168.2.86:15890/linearlist.xml", 
     dataType: "xml" 
     }).done(function (res) { 
     //alert(res); 
     }).fail(function (jqXHR, textStatus, errorThrown) { 
     alert("AJAX call failed: " + textStatus + ", " + errorThrown); 
     }); 
    } 

    function GetData() { 
    update(); 
    setTimeout(function() { 
     GetData(); 
    }, 50); 
    } 
}); 

    </script> 
</head> 
<body> 
<script type="text/javascript"> 
    GetData(); 
</script> 
    <div class="result"> result div</div> 
</body> 
</html> 

UPDATE :

내 코드 재를 업데이트했습니다 : 이안의 대답 @ . 슬프게도 아직 작동하지 않습니다. textStatus 또는 errorThrown 결과도 표시되지 않습니다. VS2012를 통해 Internet Explorer 디버깅을 시도했지만 멀리 가지 않습니다. URL을 웹 페이지에 넣으면 XML 문서를 볼 수 있습니다.

+0

해당 페이지가 "192.168.2.86:15890"에서 제공되고 있습니까? 그렇지 않은 경우 브라우저는 서버가 적절한 "액세스 제어"헤더를 제공하지 않는 한 그렇게 할 수 없습니다. – Pointy

+1

"작동하지 않는 것"이외의 다른 문제에 대해 구체적으로 설명해 주시겠습니까? 파이어 버그와 같은 디버거를 사용해 보셨습니까? –

+0

데이터 유형을 "xml"로 변경해야합니다. 문제가 해결 될지 확실하지는 않습니다. –

답변

7

$.get은 하나의 매개 변수를 개체 리터럴로 허용하지 않습니다. 그것은 여러 허용합니다 http://api.jquery.com/jQuery.get/#jQuery-get1

당신은 $.ajax 구문 생각 될 수

다음 fail를 사용

$.ajax({ 
    type: "GET", 
    url: "http://192.168.2.86:15890//onair.status.xml", 
    dataType: "text" 
}).done(function (res) { 
    // Your `success` code 
}).fail(function (jqXHR, textStatus, errorThrown) { 
    alert("AJAX call failed: " + textStatus + ", " + errorThrown); 
}); 

: 어쨌든 http://api.jquery.com/jQuery.ajax/

이 좋아 호출 : $.ajax

$.get("http://192.168.2.86:15890//onair.status.xml", {}, function (res) { 
    var xml; 
    var tmp; 
    if (typeof res == "string") { 
     tmp = "<root>" + res + "</root>"; 
     xml = new ActiveXObject("Microsoft.XMLDOM"); 
     xml.async = false; 
     xml.loadXML(res); 
    } else { 
     xml = res; 
    } 
    alert("Success!"); 
}, "text"); 

또는 사용 방법을 사용하면 오류가 발생했으며 일부 이유는 무엇인지 알 수 있습니다. 에 따라

무엇을/http://192.168.2.86:15890이고,이 때문에 동일 출처 정책에 AJAX를 호출을 할 수 없습니다 - https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript

나는 당신이 당신의 success 콜백 일부 논리를 알고,하지만 난 확신 dataType을 "텍스트"로 지정하면 res 변수는 이고 항상은 문자열입니다. 따라서 if/else은 실제로 많이하지 않아야합니다. else은 절대로 실행해서는 안됩니다. 어쨌든, XML을 원한다면 dataType을 "xml"로 지정하는 것이 더 쉽습니다.

+0

안녕하세요. 나는 아약스 방법을 사용했고, 적어도 오류가 있음을 이제는 나에게 말하고있다. 그러나 그것은 무엇을 말하는 것이 아니다. ''AJAX 호출이 실패했습니다. '',''textStatus'와'errorThrown'가 전달되지 않습니다. 또한이 URL은 내 서버에 없으므로 동일한 출처 문제가 있어서는 안됩니다. 맞습니까? –

+0

@ChrisPaton 재미 있습니다. 어떤 브라우저에서이 작업을 수행하고 있습니까? 당신은 콘솔/네트워크를보고 AJAX 요청이 어떻게되는지 볼 수 있습니다. 서버에없는 경우 문제가되지 않습니다. 그러나 도메인이 귀하의 페이지와 다른 경우 문제가 발생하게됩니다.하지만 같은 서버가 아니기 때문에 다른 도메인이 될 것입니다. 그것은 http : // www.stackoverflow.com과 같이 'http : // www.google.com'에 AJAX 요청을하려고하는데, 허용되지 않습니다. – Ian

+0

안녕 이안, 방금 약간의 업데이트를 게시했습니다. 뭔가 다른 버전의 jquery를 사용하고 있습니다. –

관련 문제