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

Ajax调用PHP接口回调异常:无法获取乘积校验返回结果

解决AJAX JSONP回调无法获取返回数据的问题

看起来你遇到的核心问题是JSONP不支持POST请求,再加上后端返回格式可能没符合JSONP的要求,导致success回调里拿不到数据。咱们一步步来排查和解决:

1. 移除POST请求设置,改用GET

JSONP的实现原理是通过动态创建<script>标签加载跨域资源,而script标签只能发起GET请求,你设置的type: "POST"会被jQuery自动忽略,这会导致后端接收参数或返回数据的流程出错。修改你的AJAX代码:

function call(){ 
    console.log(fun); 
    $.ajax({ 
        url: "http://localhost/mt2/checkanswer.php", 
        dataType: "jsonp", 
        // 删掉type: "POST",JSONP默认使用GET请求
        data: { num1:2, num2:2, answer:5 }, 
        success: function( data1 ) { 
            console.log(data1); 
            $( "#timeDiv" ).html(data1); // 示例:将返回数据渲染到页面
        }
    })
}

2. 确保后端返回正确的JSONP格式

JSONP要求返回的不是纯JSON字符串,而是回调函数包裹的数据。jQuery发起JSONP请求时,会自动在URL里添加一个callback参数(比如callback=jQuery112407653456789012345_1699999999999),你的后端需要读取这个参数,然后把返回数据放在该函数调用里返回。

举个PHP后端的示例(checkanswer.php):

<?php
// 获取前端自动传递的callback参数
$callback = isset($_GET['callback']) ? $_GET['callback'] : '';
// 处理业务逻辑:校验乘积是否正确
$num1 = $_GET['num1'];
$num2 = $_GET['num2'];
$answer = $_GET['answer'];
$result = array(
    'isCorrect' => ($num1 * $num2 == $answer),
    'message' => $num1 * $num2 == $answer ? '答案正确' : '答案错误'
);
// 用callback包裹数据,返回标准JSONP格式内容
echo $callback . '(' . json_encode($result) . ')';
?>

3. 额外排查小技巧

  • 打开浏览器控制台的网络面板,查看JSONP请求的响应内容:如果返回的是纯JSON(比如{"isCorrect":false,"message":"答案错误"}),那就是后端没处理callback参数,必须改成函数包裹的形式。
  • 确认后端允许GET请求:如果你的PHP脚本限制了只能POST访问,也要同步修改后端的请求方式校验逻辑。

调整完成后,你的success回调里应该就能正确拿到data1的数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:34:13