跨域AJAX调用返回字符串JSON,而不是JSON对象

时间:2013-10-18 18:12:56

标签: javascript jquery ajax json

我正在进行跨域AJAX调用,我不确定我是否做错了或者API调用的提供程序错误地返回了JSON。每当我从API调用获得响应时,它就是一个字符串而不是JSON对象。这是我的AJAX电话。

    $.ajax({
        async: false,
        dataType: 'jsonp',
        url: 'http://cross-domain/getSummaryStat.action',
        data: { minDailyDate: start_param, maxDailyDate: end_param },
        success: function(response) {
            map = {
                gamefuse: response["ROM-GF-Live"],
                facebook: response["ROM-FB-Live"],
                kongregate: response["ROM-Kongregate-Live"],
                yahoo: response["ROM-Yahoo-Live"]
            }
        },
        error: function(xhr, textStatus, errorThrown){
           alert('request failed');
        }
    });

当回复回来时,这里是response.result

"[{"dayRetention1":"0.01453800063053","visit":"601","installs":"203"},{"dayRetention1":"0.122484891199019","visit":"33863","installs":"10949"]"

注意:我将dataType设置为jsonp,因为它是一个跨域AJAX调用,没有它我收到错误。

1 个答案:

答案 0 :(得分:0)

首先,看起来返回的字符串甚至没有正确的JSON格式。它在最后错过了一个紧密的支架。

如果这不能解决问题,那么这里的问题可能就在服务器端。由于JSONP是带填充的JSON,因此返回函数不应为:

function_name("the string that I return");

相反,你应该:

function_name({
    "name":"Bob Loblaw", 
    "age":40
});