jquery - ajax 调用外部位置的 Web 服务

标签 jquery ajax web-services liferay

您好,我正在为 liferay 开发 portlet,并且正在尝试调用 Web 服务。我知道我必须在 jquery 中支持 CORS,但即使定义了,我也只能使用 IE9 从 Web 服务获得响应(??????)。 Chrome 和 Mozilla 就是不响应。

这是我的代码:

 jQuery.support.cors = true; 
 AUI().ready(function(){
 Liferay.on('senduid', function(data){
      var uid=data.data;
      var v="1.0";
      var q="dojo toolkit";
      $.ajax({ url: 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=dojo%20toolkit', data: "&v="+v+"&q="+q, dataType: 'json',  success: function(data){
              alert('here...success');
      },
      // complete: function (data) {
      //     alert('here');
      // }
      });
 });
 });

正如我所说,警报“此处成功”仅出现在 IE 中。

谁能帮我怎么做?

PS:网络服务应该发送如下内容:

 "pages": [
            {
                "start": "0",
                "label": 1
            },
            {
                "start": "4",
                "label": 2
            }, ...

谢谢

最佳答案

您遇到了跨域问题。我猜您的 IE 浏览器中的安全设置并没有禁止跨域调用。如果将 dataType 值更改为“jsonp”,这将起作用。

我已经让它在 JSFiddle 中工作了:JSFiddle Example - Working

var uid = 'test';
var v = "1.0";
var q = "dojo toolkit";
$.ajax({
    url: 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=dojo%20toolkit',
    data: {
        "v": v,
        "q": q
    },
    dataType: 'jsonp',
    success: function (data) {
        alert('here...success');
    }
});

关于jquery - ajax 调用外部位置的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19121746/

相关文章:

javascript - 在克隆表行中添加和删除单元格

jquery - 如何反转jquery UI折叠效果的方向?

javascript - 在ajax中从json中选择特定的键值

php - 交互式单页应用程序

jquery - 根据复选框添加/删除类

jquery - 使用 jQuery 更改 jQuery 移动按钮的值

php - jquery中如何读取json数组中的数据?

python - Django:我想识别一个哈希 url

java - 无法从 wsdl 文件生成 java 代码

java - 不使用附件的 SOAP 消息