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

Cross-domain AJAX call returning string JSON, instead of JSON object

本文关键字:JSON 对象 跨域 调用 返回 字符串 AJAX      更新时间:2023-09-26

我正在进行跨域 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');
        }
    });

当响应返回时,这里是响应结果

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

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

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

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

function_name("the string that I return");

相反,您应该拥有:

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