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

你只需要像那样重写它:

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

正如Karim所说,除非服务器允许,否则跨域ajax不起作用。 在这种情况下谷歌没有,但是,在许多情况下,有一个简单的方法来解决这个问题。 只需让您的本地服务器传递通过HTTP或HTTPS检索的内容。

例如,如果您使用的是PHP,则可以:

使用以下命令创建文件web_root / ajax_responders / google.php:

  

然后将您的代码更改为连接到该代码,而不是直接在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(String)默认值:Intelligent Guess(xml或html)。 您期望从服务器返回的数据类型。 如果未指定,则jQuery将根据响应的MIME类型智能地将responseXML或responseText传递给成功回调。

可用的类型(以及作为成功回调的第一个参数传递的结果)是:

“xml”:返回可以通过jQuery处理的XML文档。

“html”:以纯文本forms返回HTML; 包含的脚本标记在插入DOM时进行评估。

“script”:将响应评估为JavaScript并将其作为纯文本返回。 除非使用选项“cache”,否则禁用缓存。 注意:这会将POST转换为GET以获取远程域请求。

“json”:将响应计算为JSON并返回JavaScript对象。

“jsonp”:使用JSONP加载JSON块。 会添加一个额外的“?callback =?” 到URL的末尾以指定回调。 (在jQuery 1.2中添加)

“text”:纯文本字符串。

请参阅http://docs.jquery.com/Ajax/jQuery.ajax#options

我知道的唯一可以让你使用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的文件导入到项目中,并将其包含在以下代码中:

  

要以文本forms获取外部网页的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 } }); 

实际上,您可以使用ie Firefox进行跨域请求,请参阅以下内容: http : //ajaxian.com/archives/cross-site-xmlhttprequest-in-firefox-3

Webkit和IE8也以某种方式支持它。

由于jQuery AJAX请求是跨域的,因此您可以使用cURL(在PHP中)来设置代理服务器。

假设一个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不赞成使用successerror函数,因此您需要使用donefail ,并在fail时使用data.responseText访问数据,并在done时使用data 。 这类似于@Marco Pavan的回答,但你不需要任何JQuery插件或任何东西来使用它。

试试这个

 alert( data['responseText'] );