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

升级PHP 8后AJAX动态加载内容失败求助

动态加载内容失效(PHP 8.0升级后500错误+跨域提示)

升级到PHP 8.0后,滚动到底部动态加载内容的功能失效。触发AJAX请求时控制台报500错误,同时提示“strict-origin-when-cross-origin”。

前端JS代码

$(window).scroll(function() {
    if($(window).scrollTop() + $(window).height() > $(document).height() -50) {
        var counter= parseInt($('#contentcounter').attr('value'));
        var query= $('#query').attr('value');
        
        $.ajax({
            url: 'loadcontent_dynamically.php',
            data:  ({counter: counter,
                    query: query}),
            type: 'POST',
            success: function (data) {
                $('#content-container').append(data);
                $('#contentcounter').attr('value',counter +12); //increase input value 
            }
         });                         
    }
});

背景补充

  • loadcontent_dynamically.php与index.php处于同一目录,用于从数据库加载内容并返回HTML
  • 页面所在子域名转发至主域名外的其他文件夹
  • 此前功能正常,本人并非专业开发者,希望获得简单易懂的解决提示,必要时可提供loadcontent_dynamically.php代码

解决提示

  • 先排查PHP 8.0兼容性问题:PHP 8.0对语法错误、废弃函数的检查更严格,比如旧版的mysql_*数据库函数已完全移除,未定义变量直接使用也会触发严重错误。
    可以在loadcontent_dynamically.php开头添加以下代码,直接显示错误信息:

    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    

    然后直接在浏览器访问这个PHP文件,就能看到导致500错误的具体原因。

  • 解决跨域提示问题:虽然文件在同一目录,但子域名转发规则可能导致AJAX请求的实际域名和页面域名不一致。把AJAX的url改成绝对路径,比如:

    url: 'https://你的子域名/对应路径/loadcontent_dynamically.php',
    

    确保请求和页面同域名。

  • 检查请求参数的安全性:PHP 8.0中如果直接使用$_POST['counter']或$_POST['query'],当参数不存在时会抛出错误。可以改成空合并运算符来避免:

    $counter = $_POST['counter'] ?? 0;
    $query = $_POST['query'] ?? '';
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:37:24