【发布时间】:2017-03-03 15:52:47
【问题描述】:
我正在尝试设置一个 AJAX 功能来清除我的购物车
HTML
<a onclick="clearCart(this)" data-href="/product-page/" data-productID="182">Go to Product</a>
JavaScript
function clearCart(d) {
jQuery(document).ready(function($) {
var productID = d.getAttribute("data-productID");
$.ajax({
url: "addtocart.php",
data: {productID: productID},
type: "post",
success: function(output) {
window.location = d.getAttribute("data-href");
//alert(output);
}
});
});
}
PHP
if(isset($_POST['productID']) && !empty($_POST['productID'])) {
global $woocommerce;
$woocommerce->cart->empty_cart();
//echo $_POST['productID'];
}
结果
- 第 3 行 PHP 引起的内部服务器错误
- Alerting var output is working(查看注释掉的代码)
解决方案
我自己想通了,@MirzaP 也给了我很大的帮助
JS
function clearCart(d) {
jQuery.post(
"https://dercampus.ch/wp-admin/admin-ajax.php",
//ajaxurl,
{
"action": "clearcart",
"data": d.getAttribute("data-productid")
},
function(){
window.location = d.getAttribute("data-href");
}
);
}
PHP
add_action('wp_ajax_nopriv_clearcart',function(){
global $woocommerce;
$woocommerce->cart->empty_cart();
});
【问题讨论】:
-
当您在 wp-config.php 中将 WP_DEBUG 设置为 true 时,会显示什么内部错误?
-
这个 php 文件没有显示任何内容。我需要调整任何东西,因为它是 AJAX 调用吗?该文件位于我的插件的子目录中
-
当您右键单击 -> 检查元素 -> 控制台(在 chrome 中)时,它是否在浏览器控制台中显示任何内容?
-
点击后显示dercampus.ch/log.png
-
当您将 WP_DEBUG 设置为 true 然后执行相同操作时,错误 500 是否会扩展?或者,如果您单击 addtocart.php url 本身将标志设置为 true,是否会发生任何事情?此外,您应该真正使用 admin-ajax.php 文件进行 WordPress 的 ajax 调用。
标签: javascript php ajax wordpress woocommerce