我正在尝试让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
有没有人能告诉我内部服务器错误的原因?
提前谢谢。
以下是控制台的屏幕截图,显示了带有参数name:"action“和value:"0.00”的请求头,这是正确的POST数据,响应头显示"Internal Server Error“。所以AJAX请求正在被发送,错误与响应PHP..?
发布于 2017-07-21 02:42:08
在Wordpress中使用AJAX时,您需要先加载WP,然后才能使用任何全局变量和/或函数。
在您要通过AJAX发布到的PHP文件的顶部,包括以下行:require_once( dirname( dirname( __FILE__ ) ) . '/wp-admin/wp-load.php' );
现在WP已加载,您可以使用它的所有辉煌功能。
https://stackoverflow.com/questions/31933811
复制相似问题