2010-07-01 128 views
1

警报框将不显示任何内容,并且不应该从任何URL返回任何数据,当它应该显示谷歌页面!有任何想法吗?我使用POST是因为我试图让它发送查询字符串数据。(简单)jquery ajax不返回数据

$.ajax({ 
     type: "POST", 
     url: "http://www.google.com", 
     success: function(msg) { 
      alert("Data Saved: " + msg); 
     } 
    }); 
+2

跨域策略..搜索它在这里在SO ...或尝试谷歌关于该主题... – Reigel 2010-07-01 09:38:57

+0

好点Reigel。我假定谷歌是作为一个任意的例子。 – spinon 2010-07-01 09:40:52

+0

谢谢!我认为Ajax应该能够从任何服务器请求一个页面,似乎有点奇怪,为什么这是不可能的,所以现在我向它的请求,然后我的服务器将请求外部页面。 – 2010-07-01 09:47:41

回答

3

是的TOm,

您正在进行跨域脚本编写。

将URL更改为您自己域中的文件。

$.ajax({ 
     type: "POST", 
     url: "anyfileinYourDomain.xxx", 
     success: function(msg) { 
      alert("Data Saved: " + msg); 
     } 
    }); 
+0

我不认为,更改域名会产生任何影响,因为URL是假设链接到文件的。 – Starx 2010-07-01 09:43:49

+0

其实他正在进行跨域访问。跨域Ajax有不同的技术。 – BlueBird 2010-07-01 09:44:49

+1

@Starx - 不是真的......你仍然与http://en.wikipedia.org/wiki/Same_origin_policy – Reigel 2010-07-01 09:45:20

-2

我会尝试设置dataType为html,看看是否有帮助。

+0

这甚至没有意义 – 2010-07-01 09:42:17

+0

哇!非常讨厌那里。你能否收回倒票?检查ajax调用的文档。 http://api.jquery.com/jQuery.ajax/ 这里是jQuery的文档的简短信息: 的dataType 默认:智能猜测(XML,JSON,脚本或HTML) 的数据类型你期望从服务器回来。 不知道为什么没有任何意义?请解释? – spinon 2010-07-01 09:49:08

+0

只因为我评论并不意味着我需要投票给你,也没有人恨你。每一个评论是赞赏。我写它的原因没有意义,因为我试图检索谷歌主页,它将返回HTML无论如何。有了ajax请求,我从来没有看到它需要或可能(但我可能是错误的)指定返回类型,我总是把返回的数据作为文本。 – 2010-07-01 09:53:09

0

你可以做到这一点只有当你拥有google.com我认为至少是不太可能:)(跨域问题)

为了克服这一点,你可以张贴到您的服务器,让服务器连接到google.com,那么您可以使用从google.com检索到的数据来回复用户。

+0

@Lukasz_Dziedzia如何做到这一点? – 2011-12-02 19:06:27

+0

简而言之,您需要编写与Google通信并公开数据的服务器端脚本 – dzida 2011-12-05 15:44:51