当我在jQuery中进行AJAX调用时,JSON出错

时间:2015-04-15 23:21:12

标签: javascript jquery ajax json

当我尝试从AJAX调用返回一串JSON时,我在控制台中收到以下错误。

  

未捕获的SyntaxError:意外的令牌

我已经使用我正在使用的代码添加了一个codepen。

如果单击转换按钮并在控制台中查看,您将看到错误。

我不能为我的生活弄清楚。

感谢。

JB

http://codepen.io/anon/pen/XJvyWq

jQuery('.convert').click(function(){
    jQuery.get("https://rate-exchange.herokuapp.com/fetchRate?from=EUR&to=CAD&callback=?", function(data){
        console.log("Data: " + data);
    }, 'json')
});

4 个答案:

答案 0 :(得分:2)

首先删除“=”。

对于控制台中的字符串显示,您可以使用JSON对象的方法stringify

jQuery('.convert').click(function(){


jQuery.get("https://rate-exchange.herokuapp.com/fetchRate?from=EUR&to=CAD&callback", function(data){
         console.log("Data: " +JSON.stringify(data) );
            }, 'json');
        });

或者在控制台中显示一个对象,你可以写一下:

的jQuery( '转换')。点击(函数(){

jQuery.get("https://rate-exchange.herokuapp.com/fetchRate?from=EUR&to=CAD&callback", function(data){
         console.log(data );
            }, 'json');
        });

结果:

Object {To: "CAD", From: "EUR", Rate: "1.3138"}

答案 1 :(得分:0)

删除回调=?从您提供的URL的末尾或从.get()方法调用中删除'json'。

jQuery('.convert').click(function(){
  jQuery.get("https://rate-exchange.herokuapp.com/fetchRate?from=EUR&to=CAD", function(data){
        console.log(data);
  });});

这是因为jQuery假设当您在URL中传递“callback”参数并输入“json”时,响应将为JSONP。但在这种情况下,服务器发送一个JSON字符串。而不是传递“?”如果传递现有函数的名称,则不会抛出错误。

服务器的当前响应是:

{"To":"CAD","From":"EUR","Rate":"1.3138"}

如果服务器正在使用JSONP进行响应,并且您传递的回调是“test”,则响应将是:

test({"To":"CAD","From":"EUR","Rate":"1.3138"})

http://codepen.io/tejzpr/pen/yymQNz?editors=101解释了这两种情况。

答案 2 :(得分:0)

在@SnehalShah说的第二个参数中移除json并且它可以正常工作

$('.convert').click(function(){
    $.get("https://rate-exchange.herokuapp.com/fetchRate?from=EUR&to=CAD&callback=?", function(data){
         console.log("Data: " + JSON.stringify(data));  
    });
});

答案 3 :(得分:0)

http://jsfiddle.net/1z20m3pL/

试试这个::

jQuery('.convert').click(function(){
    jQuery.get("https://rate-exchange.herokuapp.com/fetchRate?from=EUR&to=CAD&callback=?", function(data){
                    console.log("To: " + data.To);
                    console.log("From: " + data.From);
                    console.log("Rate: " + data.Rate);
                });
            });