web-dev-qa-db-ja.com

jquery ajaxはhttp urlからresponsetextを取得します

どちらでもない:

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にアクセスするにはどうすればよいですか?

24
stephan

次のように書き直す必要があります。

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

alert(response);
33
stoimen

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);
25
ghbarratt

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で追加)

「テキスト」:プレーンテキスト文字列。

http://docs.jquery.com/Ajax/jQuery.ajax#options を参照してください

3
Ken Egozi

私が知っている、ajaxクロスドメインを使用できる唯一の方法はJSONP( http://ajaxian.com/archives/jsonp-json-with-padding )です。

そして、クロスドメインAjaxを実現するためのいくつかのさまざまなテクニックを投稿する投稿があります( http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide

2
Not Available

最初に、クロスドメインリクエストを許可する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
    }
});
2
Marco Pavan

実際には、Firefoxでクロスドメインリクエストを行うことができます。概要については、こちらをご覧ください。 http://ajaxian.com/archives/cross-site-xmlhttprequest-in-firefox-

WebkitとIE8も同様にサポートしています。

1
gustaf

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ファイルに対して行われ、クロスドメインリクエストを実行する必要があります。

0
KannarKK

これは非常に古いですが、うまくいけばこれは誰かを助ける。私は異なるエラーコードで応答を送信していますが、これは私が見つけた唯一の解決策です

$.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プラグインなどを使用する必要はありません。

0
MANA624