2009-07-20 9 views
21

どちらから:jqueryのAJAX GET responsetextのHTTP URL

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

NOR:

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

は私にオブジェクトを与えます。 responseTextへのアクセス方法を教えてください。 jqueryのAJAX機能で

答えて

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タイプに基づいて成功したコールバックにresponseXMLまたはresponseTextをインテリジェントに渡します。

利用可能なタイプ(とあなたの成功コールバックへの最初の引数として渡された結果)は以下のとおりです。

「XML」:jQueryを介して処理することができ、XML文書を返します。

"html":HTMLをプレーンテキストとして返します。含まれているスクリプトタグは、DOMに挿入されると評価されます。

"script":レスポンスをJavaScriptとして評価し、プレーンテキストとして返します。オプション "cache"が使用されていない限り、キャッシュを無効にします。注:これにより、リモートドメイン要求のPOSTがGETに変わります。

"json":レスポンスをJSONとして評価し、JavaScriptオブジェクトを返します。

"jsonp":JSONPを使用してJSONブロックに読み込みます。追加の "?callback =?" 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

のWebkit:

そして、ここでは、あなたが概要については、すなわちそれ自体のFirefox、これとのクロスドメインリクエストを作ることができ、ポストいくつかの様々な技術が実際にクロスドメインAJAX(http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide

+0

mmh私はie8とff3.5.1でそれを試しました - それは動作しませんffで? –

+0

空です - >応答なし - なぜですか? –

+3

@all - ドメインがjsonpが有効になっていない限り、クロスドメインajaxは機能しません - googleは対応していません – karim79

2

私はそれはあなたがAJAXクロスドメインを使用することができます知っている唯一の方法は、JSONP(http://ajaxian.com/archives/jsonp-json-with-padding)です:

は、あなたは、単にそのように書き直す必要があります

1

を達成することを柱ですIE8も同様にサポートしています。

20

カライム氏によると、クロスドメインajaxは、サーバが許可しない限り動作しません。この場合、Googleは、しかし、多くの場合、これを回避する簡単なトリックがありません。ローカルサーバーにHTTPまたはHTTPSで取得したコンテンツを渡すだけです。例えば

、あなたがPHPを使用していた場合、あなたはできます

が付いたファイルweb_root/ajax_responders/google.phpを作成します。

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

そしてそれに接続する代わりのようにコードを変更します

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要求は、彼らがクロスドメインである場合に、プロキシサーバーをセットアップするために(PHPで)のcURLを使用することができます失敗するので

$.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ファイル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']); 
関連する問題