wake-up-neo.com

jquery Ajax Antwortetext von http-URL erhalten

Weder:

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

Noch:

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

gib mir ein Objekt Wie erhalte ich Zugang zur responseText?

23
stephan

Sie müssen es einfach so umschreiben:

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

alert(response);
30
stoimen

Wie Karim sagte, funktioniert Cross Domain Ajax nur, wenn der Server dies zulässt. In diesem Fall tut Google dies nicht, ABER, es gibt einen einfachen Trick, um dies in vielen Fällen zu umgehen. Lassen Sie einfach Ihren lokalen Server den durch HTTP oder HTTPS abgerufenen Inhalt passieren. 

Wenn Sie beispielsweise PHP verwenden, können Sie Folgendes tun:

Erstellen Sie die Datei web_root/ajax_responders/google.php mit:

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

Und ändern Sie dann Ihren Code, um eine Verbindung zu diesem herzustellen, anstatt direkt mit der Domain von Google im Javascript:

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

in jquery ajax-Funktionen lautet die Signatur für den erfolgreichen Rückruf:

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

je nach gewünschtem Datentyp erhalten Sie mit dem Parameter 'dataType' das Argument 'data'.

aus den docs:

dataType (String) Standard: Intelligent Guess (xml oder html) ..__: Der Datentyp, den Sie vom Server erwarten. Wenn keine angegeben ist, leitet jQuery je nach MIME-Typ der Antwort entweder responseXML oder responseText intelligent an Ihren Erfolgsrückruf weiter.

Die verfügbaren Typen (und das Ergebnis, das als erstes Argument an Ihren Erfolgsrückruf übergeben wird) sind: 

"xml": Gibt ein XML-Dokument zurück, das mit jQuery verarbeitet werden kann. 

"html": Gibt HTML als einfachen Text zurück. enthaltene Skript-Tags werden ausgewertet, wenn sie in das DOM eingefügt werden.

"script": Bewertet die Antwort als JavaScript und gibt sie als Text zurück. Deaktiviert das Caching, sofern die Option "cache" nicht verwendet wird. Hinweis: Dadurch werden POSTs in GETs für Remotedomänenanforderungen umgewandelt. 

"json": Bewertet die Antwort als JSON und gibt ein JavaScript-Objekt zurück. 

"jsonp": Lädt einen JSON-Block mit JSONP. Fügt ein zusätzliches "? Callback =?" bis zum Ende Ihrer URL, um den Rückruf anzugeben. (Hinzugefügt in jQuery 1.2) 

"text": Eine Textzeichenfolge.

siehe http://docs.jquery.com/Ajax/jQuery.ajax#options

3
Ken Egozi

Der einzige Weg, von dem ich weiß, dass Sie ajax-domänenübergreifend verwenden können, ist JSONP ( http://ajaxian.com/archives/jsonp-json-with-padding ).

Und hier ist ein Beitrag, in dem verschiedene Techniken zum domänenübergreifenden Ajax ( http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide ) veröffentlicht werden.

2
Not Available

Zunächst müssen Sie ein JQuery-Plugin herunterladen, um domänenübergreifende Anforderungen zuzulassen Laden Sie es hier herunter: https://github.com/padolsey/jQuery-Plugins/downloads

Importieren Sie die Datei mit dem Namen query.xdomainsajax.js in Ihr Projekt und fügen Sie sie mit folgendem Code hinzu:

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

Um die HTML-Datei einer externen Webseite in Textform abzurufen, können Sie Folgendes schreiben:

$.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

Tatsächlich können Sie domänenübergreifende Anforderungen mit Firefox erstellen. Eine Übersicht finden Sie hier: http://ajaxian.com/archives/cross-site-xmlhttprequest-in-firefox-3

Webkit und IE8 unterstützen es in gewisser Weise auch.

1
gustaf

Da jQuery AJAX -Anfragen fehlschlagen, wenn sie domänenübergreifend sind, können Sie cURL (in PHP) verwenden, um einen Proxy-Server einzurichten.

Angenommen, eine PHP -Datei responder.php hat folgenden Inhalt:

$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;

Ihre AJAX - Anfrage sollte an diese responder.php-Datei gerichtet sein, damit sie die domänenübergreifende Anfrage ausführt.

0
KannarKK

Das ist super alt, aber hoffentlich hilft das jemandem. Ich sende Antworten mit verschiedenen Fehlercodes zurück und dies ist die einzige Lösung, die ich gefunden habe 

$.ajax({
    data: {
        "data": "mydata"
    },
    type: "POST",
    url: "myurl"
}).done(function(data){
    alert(data);
}).fail(function(data){
    alert(data.responseText)
});

Da JQuery die Funktionen success und error nicht mehr unterstützt, müssen Sie done und fail verwenden und auf die Daten mit data.responseText in fail und nur mit data in done zugreifen. Dies ist der Antwort von @Marco Pavan ähnlich, aber Sie benötigen keine JQuery-Plugins oder ähnliches.

0
MANA624