我正在尝试通过AJAX测试API。我使用过JQuery:
$(document).ready(function(){
$('#ajax').click(function(e){
var sampleHTML = '<html></html>';
var api_key = 'asfasasfs2';
$.post('http://google.com/', { api_key: api_key, html: sampleHTML },
function(data) {
alert("Data Loaded: " + data);
});
});
});
当我使用绝对URL时,我需要它,因为这是一个外部API,firebug什么都没有显示。好像没有发帖请求!
我以为我会在Chrome上测试它,它会显示状态为已取消且类型为待处理状态。这是什么意思?
请注意,我已使用Google的网址隐藏我的API网址。
答案 0 :(得分:5)
请参阅jquery documentation。如果网址不在同一个域中,则无效:
由于浏览器安全限制,大多数“Ajax”请求都遵循相同的原始策略;请求无法成功从其他域,子域或协议中检索数据。
如果你可以调整你的api,你可以试试ajax post with script or jsonp as the return data:
脚本和JSONP请求不受相同的原始策略限制。
答案 1 :(得分:0)
试试这个
$(document).ready(function(){
$('#ajax').live("click", function(e){
$.ajax({
type: "POST",
url: "http://www.google.com",
data: "api_key"="asfasasfs2"
"&html="<html><html>",
success: function(html){
alert(data);
},
error: function(request){
alert(request.responseText);
},
complete : function(){
}
});
});
});
试试这个。它应该工作。并且同源政策不适用于发布的表格。 如果火灾没有显示任何意味着没有生成点击事件