You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用返回JSON的PHP接口报语法错误,但已获取到响应内容

问题分析与解决方案

你遇到的这个语法错误,核心原因是JSONP格式不匹配。让我给你拆解下:

为什么会报错?

你在JS里指定了dataType: 'jsonp',这意味着浏览器会按照JSONP的规则来处理响应——JSONP要求服务器返回的内容是「回调函数包裹JSON数据」的格式,比如:

jQuery32103297264247416809_1516181997373({"id":"1","name":"test",...})

但你的PHP接口返回的是纯JSON字符串,浏览器把它当作JS代码执行时,自然会因为{后面直接跟:而抛出语法错误,虽然你能在网络请求里看到响应内容,但JS引擎无法解析它。

另外,你的JS代码里还有两个小问题:

  • $(document).ready(function(e) { $(function(){ ... }) }); 是重复绑定DOM就绪事件,其实只需要一层$(function(){ ... })就够了
  • 用JSONP的话,jQuery会自动解析响应,不需要再调用$.parseJSON(response)

解决方案分两种情况:

情况1:继续使用JSONP(适合跨域场景)

需要修改你的PHP接口,让它支持JSONP格式——获取URL中的callback参数,然后把JSON数据包裹在这个回调函数里:

// 获取回调函数名,没有的话留空
$callback = isset($_GET['callback']) ? $_GET['callback'] : '';

// 你的数据(可以是从数据库或其他地方获取的)
$data = [
    "id"=>"1",
    "name"=>"test",
    "country"=>"uk",
    "header"=>"Header",
    "pre_cta_text"=>"Pre CTA",
    "cta_text"=>"CTA text",
    "cta"=>"CTA",
    "img"=>null,
    "active"=>"1"
];

// 输出JSONP格式内容
if (!empty($callback)) {
    echo $callback . '(' . json_encode($data) . ')';
} else {
    // 兼容普通JSON请求
    echo json_encode($data);
}

然后简化你的JS代码:

$(function(){
    $.ajax({
        type:'GET',
        dataType: 'jsonp',
        data: { country: "uk" },
        url: 'http://api.mysite.uk/advertorial/index.php',
        success: function (response){
            // 这里response已经是解析好的JS对象,直接用就行
            console.log(response);
        },
        error : function () {
            console.log('Error');
        }
    });
});

情况2:改用普通JSON请求(适合同域场景)

如果你的前端页面和PHP接口在同一个域名下,完全不需要用JSONP,直接把dataType改成json即可:

$(function(){
    $.ajax({
        type:'GET',
        dataType: 'json',
        data: { country: "uk" },
        url: 'http://api.mysite.uk/advertorial/index.php',
        success: function (response){
            console.log(response);
        },
        error : function () {
            console.log('Error');
        }
    });
});

这种情况下,你的PHP接口返回纯JSON就完全没问题,不需要修改。

内容的提问来源于stack exchange,提问作者frabis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:32:38