我正在编写一个jQuery调用来从memegenerator.net API中检索JSON数据。但是,使用下面的代码,每当我在Chrome中测试时,我都会收到 Uncaught SyntaxError:Unexpected token:错误。我尝试删除回调=?并且引发了另一个错误。
每当我直接转到网址时,它都会恢复正常。
JSFiddle中的JSLint将返回的JSON声明为有效。
有关如何使此通话成功的任何想法?
<script>
$(document).ready(function() {
$.ajax({
type: 'GET',
url: 'http://version1.api.memegenerator.net/Instances_Select_ByNew?languageCode=en&pageIndex=0&pageSize=12&urlName=Insanity-Wolf?callback=?',
dataType: 'json',
success: function() {
console.log('Success!');
},
error: function() {
console.log('Uh Oh!');
}
});
});
</script>
答案 0 :(得分:0)
听起来像是跨域错误。除非在服务器上使用jsonp
或代理脚本,否则无法使用ajax从您的域以外的域请求。 (如果使用php,它将是cURL request)
cURL请求:
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, 'http://version1.api.memegenerator.net/Instances_Select_ByNew?languageCode=en&pageIndex=0&pageSize=12&urlName=Insanity-Wolf');
curl_setopt($cURL, CURLOPT_HEADER, 0 );
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, false );
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($cURL);
curl_close($cURL);
echo $output;
答案 1 :(得分:0)
由于浏览器安全限制,大多数“Ajax”请求都遵循相同的原始策略;请求无法从其他域,子域或协议成功检索数据。你需要jsonp。
答案 2 :(得分:0)
该api要么不支持JSONP,要么寻找与callback
不同的回调参数。
另外,您的网址应为
http://version1.api.memegenerator.net/Instances_Select_ByNew?languageCode=en&pageIndex=0&pageSize=12&urlName=Insanity-Wolf&callback=?
请注意&
而不是?
另外,dataType应为"jsonp"