2009-07-20 2 views
21

어느 쪽도에서 :JQuery와 아약스 GET에서 responseText HTTP URL이

var response = $.ajax({ 
    type: "GET", 
    url: "http://www.google.de", 
    async: false, 
    success : function() { 
     alert (this); 
    } 
}); 

아니다 :

var response2 = $.get("http://www.google.de", function(data) { 
    alert("Data Loaded: " + data); 
}); 

나에게 객체를 제공합니다. responseText에 액세스하려면 어떻게해야합니까? JQuery와 아약스 기능에

답변

3

, 성공 콜백 서명은 다음과 같습니다

function (data, textStatus) { 
    // data could be xmlDoc, jsonObj, html, text, etc... 
    this; // the options for this ajax request 
} 

당신이 요구 한 데이터 유형에 따라 'dataType와'매개 변수를 사용하여, 당신은 '데이터'인수를 얻을 수 있습니다. 워드 프로세서에서

:

dataType와 (문자열) 기본값 : 지능형 추측 (XML 또는 HTML). 서버에서 예상하는 데이터 유형입니다. 아무 것도 지정하지 않으면 jQuery는 응답의 MIME 유형을 기반으로 success 콜백에 responseXML 또는 responseText를 지능적으로 전달합니다.

가능한 유형 (그리고 당신의 성공 콜백의 첫 번째 인수로 전달 된 결과가) 있습니다

"XML은"jQuery를 통해 처리 할 수있는 XML 문서를 반환합니다.

"html": HTML을 일반 텍스트로 반환합니다. 포함 된 스크립트 태그는 DOM에 삽입 될 때 평가됩니다.

"script": 응답을 JavaScript로 평가하여 일반 텍스트로 반환합니다. "cache"옵션을 사용하지 않으면 캐싱을 사용하지 않습니다. 참고 : 이것은 원격 도메인 요청에 대한 POST를 GET으로 변환합니다.

"json": 응답을 JSON으로 평가하고 JavaScript Object를 반환합니다.

"jsonp": JSONP를 사용하여 JSON 블록에로드됩니다. 추가 "? 콜백 =?" URL의 끝에 추가하여 콜백을 지정하십시오. (jQuery 1.2에 추가됨)

"text": 일반 텍스트 문자열입니다.

var response = ''; 
$.ajax({ type: "GET", 
     url: "http://www.google.de", 
     async: false, 
     success : function(text) 
     { 
      response = text; 
     } 
}); 

alert(response); 
+0

먼저 다른 주석을 참조하십시오> 더 googleHtml 텍스트! 응답 : -/ –

30

http://docs.jquery.com/Ajax/jQuery.ajax#options를 참조하십시오. http://ajaxian.com/archives/cross-site-xmlhttprequest-in-firefox-3

웹킷 :

그리고 여기 당신이 개요 즉 자체 파이어 폭스,이 크로스 도메인 요청을 할 수, 게시물 몇 가지 다양한 기술이 실제로 크로스 도메인 아약스 (http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide)

+0

mmh ie8 및 ff3.5.1에서 시도했습니다 - 작동하지 않을 것입니다. –

+0

비어 있음 -> 응답 없음 - 왜? –

+3

@all - 도메인 간 jsonp가 활성화되어 있지 않으면 도메인 간 ajax가 작동하지 않음 - Google이 없음 – karim79

1

을 달성하는 포스트 IE8도이를 지원합니다.

20

카림이 말했듯이, 크로스 도메인 아약스는 서버가 허용하지 않는 한 작동하지 않습니다. 이 경우 구글은, 그러나, 많은 경우에 이것을 피하는 간단한 트릭이 없습니다. 로컬 서버가 HTTP 또는 HTTPS를 통해 검색된 콘텐츠를 전달하게하십시오.당신이 PHP를 사용한다면

예를 들어, 당신은 할 수 :

파일을 생성을 web_root/ajax_responders/google.php와 :

<?php 
    echo file_get_contents('http://www.google.de'); 
?> 

그리고 대신의에 연결하는 코드를 변경

var response = $.ajax({ type: "GET", 
         url: "/ajax_responders/google.php", 
         async: false 
         }).responseText; 
alert(response); 
2

먼저 교차 도메인 요청을 허용하려면 JQuery 플러그인을 다운로드해야합니다. 이 코드로 프로젝트에 https://github.com/padolsey/jQuery-Plugins/downloads

가져 오기 파일이라고 query.xdomainsajax.js과 같습니다 : 여기에서 다운로드 할 수있는 형성

<script type="text/javascript" src="/path/to/the/file/jquery.xdomainajax.js"></script> 

텍스트에서 외부 웹 페이지의 HTML을 얻으려면 이 쓰기 :

가 도메인 간 경우 jQuery를 AJAX 요청이 실패 때문에
$.ajax({ 
    url: "http://www.website.com", 
    type: 'GET', 
    success: function(res) { 
     var text = res.responseText; 
     // then you can manipulate your text as you wish 
    } 
}); 
+0

이 질문과 전혀 관련이 없지만 [this JSFiddle] (http://jsfiddle.net/dcfWV/1 /) 흥미 롭습니다. 어제 게시 한 질문과 관련이 있습니다. – IgnisErus

0

, 프록시 서버를 설정 (PHP)에 컬을 사용할 수 있습니다.

는 PHP 파일 responder.php이 내용을 가지고 가정 :는 크로스 도메인 요청을 실행하도록

$url = "https://www.google.com"; 
$ch  = curl_init($url); 
curl_set_opt($ch, CURLOPT_RETURNTRANSFER, "true") 
$response= curl_exec($ch); 
curl_close($ch); 
return $response; 

귀하의 AJAX 요청이 responder.php 파일에 있어야합니다. 응답 빈입니다 - -

0

alert(data['responseText']);