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

向自定义WordPress插件发送Ajax POST请求后始终返回整页HTML

WordPress AJAX请求返回整页HTML问题修复方案

1. 修正AJAX请求URL拼写错误

你的JS代码里把isqData.ajaxurl写成了isqData.ajax_url,这是核心问题——请求没发到admin-ajax.php,反而打到了当前页面,直接返回整页HTML。

修正后的JS代码:

jQuery.ajax({
    url: isqData.ajaxurl,
    type: 'post',
    data: {
        'action': "isq_ajax",
        'nonce': isqData.nonce,
        'data': data,
    },
    success: function(d) {
        console.log(d)
    },
    error: function(d) {
        console.log(d)
    },
});

2. 优化AJAX回调函数逻辑

  • wp_send_json_success()已经自带终止程序的逻辑,不需要额外写wp_die()
  • 增加错误日志,方便定位验证失败或执行异常的问题

修正后的PHP回调:

public function isq_ajax() {
    // 写入日志确认回调是否触发
    error_log('ISQ AJAX回调已触发');
    
    if (!wp_verify_nonce( $_POST['nonce'], 'isq_nonce')) {
        error_log('ISQ Nonce验证失败');
        wp_send_json_error(array('message' => 'Nonce验证失败'));
    }

    $data = $_POST['data'];
    global $wpdb;
    $name = sanitize_text_field( $data['name'] );
    // ... 后续业务代码
    
    wp_send_json_success( array(
        'message' => 'Data saved successfully.'
    ) );
}

3. 加固脚本加载判断逻辑

原代码里get_post()->post_content在某些上下文可能为空,换成更可靠的判断:

if ( is_singular() && has_shortcode( get_the_content(), 'isq_form' ) ) {
    wp_enqueue_script( 'isq-js' );
    wp_enqueue_style( 'isq-css' );
    $rest_nonce = wp_create_nonce( 'isq_nonce' );
    wp_localize_script( 'isq-js', 'isqData', array(
        'ajaxurl' => admin_url( 'admin-ajax.php' ),
        'nonce' => $rest_nonce,
    ));
}

4. 排查其他潜在问题

  • 暂时禁用其他插件、切换默认主题(如Twenty Twenty-Four),排除冲突
  • 打开浏览器控制台Network标签,确认请求URL是admin-ajax.php,且参数包含action=isq_ajax
  • 开启WordPress调试模式(wp-config.php里设置WP_DEBUG=true、WP_DEBUG_LOG=true),查看wp-content/debug.log里的PHP报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:50:08