【问题标题】:Woocommerce checkout - Add discount with AJAXWoocommerce 结帐 - 使用 AJAX 添加折扣
【发布时间】:2015-11-03 05:00:44
【问题描述】:

我正在尝试让 Woocommerce 结帐页面在评论您的订单部分添加折扣,这是由元素的 innerHTML 更改触发的。

我使用的 JavaScript 是:

var discount = 0;
function innerHTMLChanged() {
    if (jQuery('#hideDiscount').html() != "oldText") {

        console.log("innerHTML has changed!"); 
        discount = jQuery('#hideDiscount').html();

        jQuery.ajax({
            url: "http://example.site/apply-discount.php",
            type: "POST",
            data: {
                action: jQuery('#hideDiscount').html()
            }
        }).done(function(data) {
            alert( data.message );
        });
    }
}

// fires every half a second
setInterval(innerHTMLChanged, 500);

apply-discount.php 文件包含:

<?php


$discount = $_POST['action'];
$reverseDiscount = $discount * -1;

function woo_add_cart_fee() {
    global $woocommerce;

    $woocommerce->cart->add_fee( __('Discount', 'woocommerce'), $reverseDiscount );
}

add_action('woocommerce_cart_calculate_fees','woo_add_cart_fee');

?>

执行代码时,Chrome 控制台输出以下内容:

POST http://example.site/apply-discount.php 500 
(Internal Server Error)
m.ajaxTransport.send @ jquery.js?ver=1.11.2:4
m.extend.ajax @ jquery.js?ver=1.11.2:4
innerHTMLChanged @ (index):357

谁能告诉我导致内部服务器错误的原因?

提前致谢。

这是控制台的屏幕截图,显示请求标头的参数名称:“action”和值:“0.00”,这是正确的 POST 数据,响应标头显示“Internal Server Error”。所以AJAX请求正在发送,错误是响应PHP..?

【问题讨论】:

  • 错误日志说明了什么?对于action 参数,不要传递html(),而是尝试发送val()
  • 该元素没有 jQuery val()。它只是一个包含一些文本的 ,这些文本的 innerHTML 是通过另一个 JavaScript 函数更改的。
  • 还有错误日志,它说了什么?
  • 不完全确定您所说的“错误日志”是什么意思。你只是说控制台输出,如上所述?
  • 通过错误日志,我指的是 Web 服务器错误日志。根据您使用的是 Apache 还是 Nginx 或其他一些 Web 服务器,错误将被记录到带有描述或可能提示导致 500 错误的原因的文件中

标签: php jquery ajax wordpress woocommerce


【解决方案1】:

在 Wordpress 中使用 AJAX 时,您需要先加载 WP,然后才能使用任何全局变量和/或函数。

在您通过 AJAX 发布到的 PHP 文件的顶部,包括以下行: require_once( dirname( dirname( __FILE__ ) ) . '/wp-admin/wp-load.php' );

现在 WP 已经加载完毕,你可以使用它所有的功能了。

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 2018-02-26
    • 2022-12-20
    • 2021-07-03
    • 2014-02-12
    • 2016-10-07
    相关资源
    最近更新 更多