我有一个简单的ajax请求:
$.ajax({url: 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=stuff&callback=JSON_CALLBACK',success: function(data){
console.log(data);
}});
当我手动打开链接时,我得到了我想要的对象,但没有通过ajax请求。问题是,如果api地址是http,它就可以工作。可以这样告诉我为什么会这样,以及我如何绕过它?
答案 0 :(得分:0)
您可以使用get
:https://api.jquery.com/jquery.get/
$.get( "https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=stuff&callback=JSON_CALLBACK", function( data ) {
console.log(data);
});
答案 1 :(得分:0)
首先你应该发送一个GET请求,而不是POST。然而,更大的问题是您需要检索JSONP数据,而不是JSON。
为此,您可以使用$.ajax()
并使用适当的设置:
$.ajax({
url: 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=stuff',
dataType: 'jsonp',
jsonpCallback: 'JSON_CALLBACK',
success: function(data) {
console.log(data);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 2 :(得分:0)
您需要记住指定您正在使用JSONP。
$.ajax({
url: 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=stuff&callback=?',
success: function(data){
console.log(data);
},
dataType: 'jsonp',
jsonpCallback: 'JSON_CALLBACK'
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 3 :(得分:0)
尝试将'jsonp'作为数据类型的选项添加到您的ajax设置中,例如:
$.ajax({
url: 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search& gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=stuff&callback=JSON_CALLBACK',
dataType: 'jsonp',
success: function(data){
console.log(data);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
编辑:要明确,你也可以使用$ get,但它只是一个速记版本:
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});
$ ajax使用'GET'作为默认请求方法。