Php 在订单接收页面中通过AJAX更新订单状态

Php 在订单接收页面中通过AJAX更新订单状态,php,jquery,ajax,wordpress,woocommerce,Php,Jquery,Ajax,Wordpress,Woocommerce,当客户通过AJAX单击感谢页面上的按钮时,我试图将woocommerce订单的状态从处理更改为完成 我的代码如下: $.ajax({ 键入:“post”, 数据类型:“json”, url:ajax\uURL, 数据:{操作:'兑换完成'}, 成功:功能(响应){ 警报(“订单数据已成功获取”); } }); 以及myfunctions.php中的php add_action('wp_ajax_赎回_complete'、'fairbooks_赎回_complete'); 添加操作('wp\u

当客户通过AJAX单击感谢页面上的按钮时,我试图将woocommerce订单的状态从处理更改为完成

我的代码如下:

$.ajax({
键入:“post”,
数据类型:“json”,
url:ajax\uURL,
数据:{操作:'兑换完成'},
成功:功能(响应){
警报(“订单数据已成功获取”);
}
});
以及myfunctions.php中的php

add_action('wp_ajax_赎回_complete'、'fairbooks_赎回_complete');
添加操作('wp\u ajax\u nopriv\u redeme\u complete'、'fairbooks\u redeme\u complete');
功能fairbooks\u兑换\u完成($order\u id){
$order=wc\u get\u order($order\u id);
$order->update_status('completed');
回声“测试”;
模具();
}

我知道ajax在没有
$order->update_状态('completed')的情况下工作语句,但使用它我得到一个500内部服务器错误。我还知道,如果我不使用ajax并钩住感谢页面,它会毫无问题地改变状态。是什么导致了错误,或者是否有更好的方法来解决这个问题。提前谢谢

您需要将order Id从javascript代码传递到PHP,因为它未在PHP WordPress Ajax receiver函数中定义,所以在
$order
变量未定义时出现错误500是正常的,并且在使用方法
update_status()
时引发错误

下面的完整示例基于您的代码(工作时没有错误):

add_action('woocommerce_thankyou'、'customer_完成_order_thankyou');
功能客户完成订单谢谢($order\U id){
$order=wc\u get\u order($order\u id);
//打印($order->get_status());//取消测试注释
?>


jQuery(函数($){ 如果(参数的类型=='undefined') 返回false; $('button.complete status')。单击(函数(e){ e、 预防默认值(); $.ajax({ 键入:“POST”, 数据类型:“json”, url:woocommerce_params.ajax_url, 数据:{ “操作”:“完成赎回”, 'order_id':,//这里我们发送订单id }, 成功:功能(响应){ $('.response').text(“订单数据已成功获取”); log(“订单数据已成功获取”); } }); }); });
非常感谢!有一段时间我完全被难住了。你有我的gratitude@CesarOsorio提醒:由于此答案有效并回答了您的问题,您可以请求回答,谢谢。@user2059376您现在可以在代码更新时删除您的评论…谢谢:)