2009-05-25 7 views
11

URL을 호출하고 자바 스크립트를 사용하여 응답하는 방법이 있습니까? 자바 스크립트에서 url 호출


WebRequest req = HttpWebRequest.Create("http://someurl.com"); 
WebResponse webResponse = req.GetResponse(); 
은 내가 필요한 몇 가지 정보를 보유하고 외부 URL을 가지고 있고이에 무엇을 결정하기 위해 응답을 자바 스크립트에서이 URL을 호출하고 분석 할 : 나는 ASP.NET의 동등한 필요 내 응용 프로그램.

+4

FYI : 자바 스크립트는 동일한 도메인에서만 대화 할 수 있습니다. JSON 호출을 통해 다른 사용자에게 전화를 걸 수 있지만 프록시를 사용하는 것이 좋습니다. – epascarello

답변

15

URL이 동일한 도메인 (예 : 동일한 호스트의 다른 애플리케이션)에있는 경우 AJAX 요청을 만들 수 있습니다. 그렇다면 아마도 jQuery와 같은 프레임 워크를 사용할 것입니다. 가장 가능성있는 방법은 get입니다.

$.get('http://someurl.com',function(data,status) { 
     ...parse the data... 
},'html'); 

도메인 간 문제가 발생하는 경우 가장 적합한 방법은 요청을 프록시하는 서버 측 작업을 만드는 것입니다. AJAX를 사용하여 서버에 요청하고 서버가 외부 호스트의 응답을 요청하도록합니다.

url이 다른 도메인에있는 경우 내 원래 솔루션으로 명백한 문제를 지적하기 위해 @ nickf에게 감사드립니다.

+0

이 기능은 도메인 간 보안 정책으로 인해 작동하지 않습니다. – nickf

+4

한 단어가 누락되면 깜짝 놀랄만 한 소식 .... – tvanfosson

4
var req ; 

// Browser compatibility check   
if (window.XMLHttpRequest) { 
    req = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 

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

    try { 
    req = new ActiveXObject("Microsoft.XMLHTTP"); 
    } catch (e) {} 
} 

} 


var req = new XMLHttpRequest(); 
req.open("GET", "test.html",true); 
req.onreadystatechange = function() { 
    //document.getElementById('divTxt').innerHTML = "Contents : " + req.responseText; 
} 

req.send(null); 
+1

이전 IE에 대한 지원을 포함하는 것을 잊지 마십시오. –

+2

방문객이 이전 버전의 IE를 지원하는 사이트를 방문 할 때 큰 불편을 겪을 수 있다는 경고를 잊지 마십시오. http://iedeathmarch.org/ – yfeldblum

+0

예 (심지어 jquery조차도) 코드는 이전 브라우저에서 사용되는 경우 문제가 있습니다. – NinethSense

2

예, 당신이 요구하는 것은 AJAX 또는 XMLHttpRequest입니다. jQuery와 같은 라이브러리를 사용하여 브라우저 간 호환성 문제로 전화 걸기를 단순화하거나 자체 처리기를 작성할 수 있습니다. jQuery를에

:

$.GET('url.asp', {data: 'here'}, function(data){ /* what to do with the data returned */ }) 

(W3C)에서 평범한 자바 스크립트 : 외부 페이지를 확인해야하는 경우

var xmlhttp; 
function loadXMLDoc(url) 
{ 
    xmlhttp=null; 
if (window.XMLHttpRequest) 
    {// code for all new browsers 
     xmlhttp=new XMLHttpRequest(); 
    } 
else if (window.ActiveXObject) 
    {// code for IE5 and IE6 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
if (xmlhttp!=null) 
    { 
     xmlhttp.onreadystatechange=state_Change; 
     xmlhttp.open("GET",url,true); 
     xmlhttp.send(null); 
    } 
else 
    { 
     alert("Your browser does not support XMLHTTP."); 
    } 
} 

function state_Change() 
{ 
    if (xmlhttp.readyState==4) 
     {// 4 = "loaded" 
      if (xmlhttp.status==200) 
      {// 200 = OK 
      //xmlhttp.data and shtuff 
      // ...our code here... 
     } 
    else 
     { 
      alert("Problem retrieving data"); 
     } 
    } 
} 
2

, 당신은 멀리 얻을 수 없습니다 순수한 자바 스크립트 솔루션, 외부 URL에 대한 요청이 차단되어 있기 때문입니다. JSONP를 사용하여이 문제를 해결할 수는 있지만 요청하는 페이지에서만 JSON을 제공해야만 작동합니다.

외부 링크를 받으려면 자체 서버에 프록시가 있어야합니다. 이것은 실제로 서버 측 언어로는 다소 단순합니다. 그 정보를 검색 한 다음 자바 스크립트 응용 프로그램에 전달할 수 등의 서버 측 스크립트에 컬을 같은 라이브러리를 사용하여, (404, 301, 등 등)는 서버 응답 코드를 확인하기 위해 필요한 경우

<?php 
$contents = file_get_contents($_GET['url']); // please do some sanitation here... 
              // i'm just showing an example. 
echo $contents; 
?> 

.

"이제 내 프록시 설정"옵션을 사용할 수 없다면 JSONP 지원 프록시를 사용할 수 있습니다.

+0

다른 도메인 또는 다른 하위 도메인에있는 리소스를 호출하려면 일종의 해결 방법을 사용해야합니다. PHP에서 야후의 프록시 파일 예제를 참조하십시오. http://developer.yahoo.com/javascript/howto-proxy.html Snook에는 도메인 간 완료 AJAX 호출로 해결 방법에 대한 개요가 있습니다. http://snook.ca/archives/javascript/cross_domain_aj/을 참조하십시오. –

관련 문제