ajax在外部位置调用Web服务

时间:2013-10-01 16:50:26

标签: jquery ajax web-services liferay

你好我正在开发liferay的portlet,我试图调用webservice。我知道我必须在jquery中支持CORS,但即使定义了我也只能通过IE9(?????)从webservice获得响应。 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:webservice应该发送这样的内容:

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

由于

1 个答案:

答案 0 :(得分:0)

您遇到了跨域问题。我猜你的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');
    }
});
相关问题