JSON jQuery问题:未捕获的SyntaxError:意外的令牌:

时间:2012-08-10 20:42:34

标签: jquery json

我正在编写一个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>

3 个答案:

答案 0 :(得分:0)

听起来像是跨域错误。除非在服务器上使用jsonp或代理脚本,否则无法使用ajax从您的域以外的域请求。 (如果使用php,它将是cURL request

ajax docs page

上查找jsonp

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"