首页 > 解决方案 > 使用 HTTP 请求解析 admin-ajax 中的脚本标头时出错

问题描述

我正在使用 Wordpress,但我遇到了一个奇怪的错误。这是我的 jQuery 代码

add_to_my_cart: function () {
            $(document).on('submit', 'form.form-submit', function (event) {
                event.preventDefault();              
                var data = $(this).serializeArray();

                $.ajax({
                    url     : wp_custom_settings.ajax,
                    type    : 'POST',
                    data    : data,
                    dataType: 'html',
                    success : function (code) {
                        code = parseJSON(code);
                        window.location.href = code.redirect;
                    }
                });
            });
        }

当我提交表单并将一些数据传递给 PHP 函数时,会调用上述内容。但是,我收到了一个500 internal server error关于 admin-ajax HTTP 请求,在 apache 日志中有以下内容。

Premature end of script headers: admin-ajax.php, referer: my.domain.here
AH01070: Error parsing script headers, referer: my.domain.here

error_log($message)在这个过程的每一步都使用了,我没有发现任何问题。最后一步是返回 JSON 请求。

if ( ! function_exists( 'my_send_json' ) ) {

function my_send_json( $data ) {
    error_log("DONE");
    @header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
    echo '<!-- WP_AJAX_START -->';
    echo wp_json_encode( $data );
    echo '<!-- WP_AJAX_END -->';
    if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
        wp_die();
    } else {
        die;
    }
}
}

我可以在debug.log字符串上看到DONE,但 HTTP 请求的响应为空。我也尝试删除$data并返回这个

echo wp_json_encode( array( 'status' => 'success', 'redirect' => 'my.domain.here' ));

但还是一样。我想不出任何其他方式来调试它。

标签: phpwordpressapache

解决方案


推荐阅读