どちらでもない:
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
にアクセスするにはどうすればよいですか?
次のように書き直す必要があります。
var response = '';
$.ajax({ type: "GET",
url: "http://www.google.de",
async: false,
success : function(text)
{
response = text;
}
});
alert(response);
Karimが言ったように、クロスドメインajaxは、サーバーが許可しない限り機能しません。この場合、Googleにはありませんが、多くの場合、これを回避する簡単なトリックがあります。ローカルサーバーにHTTPまたはHTTPSで取得したコンテンツを渡すだけです。
たとえば、PHPを使用している場合、次のことができます。
ファイルweb_root/ajax_responders/google.phpを作成します:
<?php
echo file_get_contents('http://www.google.de');
?>
そして、JavaScriptでGoogleのドメインに直接接続するのではなく、それに接続するようにコードを変更します。
var response = $.ajax({ type: "GET",
url: "/ajax_responders/google.php",
async: false
}).responseText;
alert(response);
jquery ajax関数では、成功コールバックシグネチャは次のとおりです。
function (data, textStatus) {
// data could be xmlDoc, jsonObj, html, text, etc...
this; // the options for this ajax request
}
要求したデータ型に応じて、「dataType」パラメーターを使用して、「data」引数を取得します。
ドキュメントから:
dataType(文字列)デフォルト:Intelligent Guess(xmlまたはhtml)。サーバーから返されることを期待しているデータのタイプ。何も指定されていない場合、jQueryは応答のMIMEタイプに基づいて、responseXMLまたはresponseTextを成功コールバックにインテリジェントに渡します。
使用可能なタイプ(および成功コールバックの最初の引数として渡される結果)は次のとおりです。
「xml」:jQueryを介して処理できるXMLドキュメントを返します。
"html":HTMLをプレーンテキストとして返します。含まれているスクリプトタグは、DOMに挿入されるときに評価されます。
"script":応答をJavaScriptとして評価し、プレーンテキストとして返します。オプション「キャッシュ」が使用されない限り、キャッシュを無効にします。注:これにより、リモートドメインリクエストのPOSTがGETに変わります。
「json」:応答をJSONとして評価し、JavaScriptオブジェクトを返します。
「jsonp」:JSONPを使用してJSONブロックをロードします。余分な「?callback =?」を追加しますURLの最後にコールバックを指定します。 (jQuery 1.2で追加)
「テキスト」:プレーンテキスト文字列。
私が知っている、ajaxクロスドメインを使用できる唯一の方法はJSONP( http://ajaxian.com/archives/jsonp-json-with-padding )です。
そして、クロスドメインAjaxを実現するためのいくつかのさまざまなテクニックを投稿する投稿があります( http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide )
最初に、クロスドメインリクエストを許可するJQueryプラグインをダウンロードする必要があります。ここからダウンロードしてください: https://github.com/padolsey/jQuery-Plugins/downloads
Query.xdomainsajax.jsというファイルをプロジェクトにインポートし、次のコードに含めます。
<script type="text/javascript" src="/path/to/the/file/jquery.xdomainajax.js"></script>
外部WebページのHTMLをテキスト形式で取得するには、次のように記述できます。
$.ajax({
url: "http://www.website.com",
type: 'GET',
success: function(res) {
var text = res.responseText;
// then you can manipulate your text as you wish
}
});
実際には、Firefoxでクロスドメインリクエストを行うことができます。概要については、こちらをご覧ください。 http://ajaxian.com/archives/cross-site-xmlhttprequest-in-firefox-
WebkitとIE8も同様にサポートしています。
JQuery AJAXリクエストはクロスドメインの場合は失敗するため、PHPで)cURLを使用してプロキシサーバーをセットアップできます。
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ファイルに対して行われ、クロスドメインリクエストを実行する必要があります。
これは非常に古いですが、うまくいけばこれは誰かを助ける。私は異なるエラーコードで応答を送信していますが、これは私が見つけた唯一の解決策です
$.ajax({
data: {
"data": "mydata"
},
type: "POST",
url: "myurl"
}).done(function(data){
alert(data);
}).fail(function(data){
alert(data.responseText)
});
JQueryはsuccess
およびerror
関数を非推奨にしているため、done
およびfail
を使用し、data.responseText
でデータにアクセスする必要がありますfail
、およびdata
の場合はdone
のみ。これは@Marco Pavanの答えに似ていますが、JQueryプラグインなどを使用する必要はありません。