JQuery AJAX получить ответный текст от http URL - PullRequest
24 голосов
/ 20 июля 2009

Ни:

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?

Ответы [ 9 ]

31 голосов
/ 20 июля 2009

Вы просто должны переписать это так:

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

alert(response);
23 голосов
/ 23 октября 2011

Как сказал Карим, междоменный ajax не будет работать, если это не разрешено сервером. В этом случае Google не делает, НО, во многих случаях есть простой прием, чтобы обойти это. Просто пусть ваш локальный сервер передает контент, полученный через HTTP или HTTPS.

Например, если вы используете PHP, вы можете:

Создайте файл web_root / ajax_responders / google.php с помощью:

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

А затем измените свой код, чтобы подключиться к нему, а не к домену Google прямо в JavaScript:

var response = $.ajax({ type: "GET",   
                        url: "/ajax_responders/google.php",   
                        async: false
                      }).responseText;
alert(response);
3 голосов
/ 20 июля 2009

в функциях jquery ajax, сигнатура обратного вызова успеха:

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

в зависимости от запрашиваемого типа данных, используя параметр «dataType», вы получите аргумент «data».

из документов:

dataType (String) По умолчанию: интеллектуальная догадка (xml или html). Тип данных, которые вы ожидаете получить от сервера. Если ничего не указано, jQuery будет интеллектуально передавать или responseXML, или responseText в ваш обратный вызов, основанный на типе ответа MIME.

Доступные типы (и результат, переданный в качестве первого аргумента в ваш обратный вызов успеха):

"xml": возвращает документ XML, который может быть обработан с помощью jQuery.

"html": возвращает HTML в виде обычного текста; включенные теги сценария оцениваются при вставке в DOM.

«script»: оценивает ответ как JavaScript и возвращает его в виде простого текста. Отключает кэширование, если не используется опция «кеш». Примечание: это превратит POST в GET для запросов удаленного домена.

"json": оценивает ответ как JSON и возвращает объект JavaScript.

"jsonp": загрузка в блок JSON с использованием JSONP. Добавит дополнительный "? Callback =?" в конце вашего URL, чтобы указать обратный вызов. (Добавлено в jQuery 1.2)

"текст": текстовая строка.

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

2 голосов
/ 07 декабря 2011

Сначала вы должны загрузить плагин 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-код внешней веб-страницы в текстовом виде, вы можете написать это:

$.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 голосов
/ 06 августа 2010

Единственный известный мне способ использования междоменного домена ajax - это JSONP (http://ajaxian.com/archives/jsonp-json-with-padding).

А вот пост, в котором публикуются различные методы для достижения междоменного ajax (http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide)

1 голос
/ 06 августа 2010

На самом деле, вы можете делать междоменные запросы с помощью Firefox, вот для обзора: http://ajaxian.com/archives/cross-site-xmlhttprequest-in-firefox-3

Webkit и IE8 также поддерживают его в некотором роде.

0 голосов
/ 14 июля 2018

Это очень старый, но, надеюсь, это кому-нибудь поможет. Я отправляю ответы с разными кодами ошибок, и это единственное найденное мной решение, которое работает в

$.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 голосов
/ 13 августа 2016

попробуйте

alert( data['responseText'] );
0 голосов
/ 19 апреля 2015

Поскольку запросы jQuery AJAX не выполняются, если они междоменные, вы можете использовать cURL (в PHP) для настройки прокси-сервера.

Предположим, что PHP-файл responseder.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-запрос должен быть к этому файлу responseder.php, чтобы он выполнял междоменный запрос.

...