gpt4 book ai didi

php - Woocommerce 结帐 - 使用 AJAX 添加折扣

转载 作者:行者123 更新时间:2023-12-01 05:39:11 26 4
gpt4 key购买 nike

我正在尝试让 Woocommerce 结账页面在查看订单部分添加折扣,这是由元素的 insideHTML 更改触发的。

我使用的 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

任何人都可以告诉我导致内部服务器错误的原因吗?

提前致谢。

这是控制台的屏幕截图,显示请求 header ,其中参数名称为“action”,值为“0.00”,这是正确的 POST 数据,响应 header 显示“内部服务器错误”。所以正在发送 AJAX 请求,但错误在于响应 PHP..?

Chrome Console screenshot

最佳答案

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

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

现在 WP 已加载,您可以使用其所有出色的功能。

关于php - Woocommerce 结帐 - 使用 AJAX 添加折扣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com