0

我正在进行跨域 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 调用,没有它我得到一个错误。

4

1 回答 1

0

首先,看起来返回的字符串甚至不是正确的 JSON 格式。它最后缺少一个右括号。

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

function_name("the string that I return");

相反,您应该拥有:

function_name({
    "name":"Bob Loblaw", 
    "age":40
});
于 2013-10-18T20:39:22.557 回答