您好,我正在为 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/