javascript - Api 休息链接和 javascript 弹出窗口
问题描述
有人能告诉我我在这个链接中可能做错了什么吗?
我确保当我点击弹出按钮时,我取消了订阅,但我没有得到弹出窗口的回报。
在我的带有 sweetalert2 的 javascript 代码下面,我相信错误在 DATA 部分,但我无法解决它。
<script type="text/javascript">
jQuery(document).ready(function($) {
$('.submit-acoes-pausar-<?php echo $today_conferir = date('Y-m-d', strtotime($date_calc)); ?>')
.click(
function() {
var id = $(this).data("id");
(async () => {
const { value: cancelamento } = await Swal.fire({
title: 'IMPORTANTE',
text: 'Deseja realmente CANCELAR TODOS os pedidos desta assinatura a partir da data selecionada?',
input: 'textarea',
inputPlaceholder: 'Coloque sua mensagem aqui...',
showConfirmButton: true,
showCancelButton: true,
confirmButtonText: 'Cancelar',
confirmButtonColor: '#ff0000',
cancelButtonText: 'Voltar',
cancelButtonColor: '#d3d3d3',
})
if (cancelamento) {
//alert(id);
//Swal.fire(`Preço: ${price}`)
$.ajax({
url: "' . get_site_url() . '/wp-json/oinb/v1/add/cancelamento",
type: "POST",
dataType: "json",
headers: {
"Access-Control-Allow-Origin": "*"
},
data: {
"id_lista": id,
"dt_ppa": dt,
"acao_ppa": acao,
"id-cliente": cliente,
},
success: function (data) {
if (data["success"]==true) {
Swal.fire({
icon: "success",
title: "Sucesso",
title: data["message"]
})
} else {
Swal.fire({
icon: "error",
title: "Oops...",
text: data["message"]
})
}
},
error: function (data) {
Swal.fire(
"Ocorreu um erro",
`valor: ${cancelamento} | data-id: ${message}`,
"error"
)
}
});
}
})()
});
});
</script>';
API
API 已经在工作了,我只需要在弹出窗口中实现它
<?php
$dir = plugin_dir_path(_DIR_);
include_once($dir . 'emails/custom-mail.php');
require_once($dir . "utils/functions.php");
add_action(
'rest_api_init',
function () {
register_rest_route(
'oinb/v1',
'/add/cancelamento',
array(
'methods' => 'POST',
'callback' => 'add_cancelamento',
)
);
}
);
function add_cancelamento(WP_REST_Request $request)
{
$id_lista = $request['id_lista'];
$dt_ppa = $request['dt_ppa'];
$acao_ppa = $request['acao_ppa'];
$date_now = date('d/m/Y');
$user_id = get_post_meta($id_lista, 'id-cliente', true);
$user_info = get_userdata($user_id);
$user_email = $user_info->user_email;
$new_assinatura = array(
'post_status' => 'publish',
'post_type' => 'acaoprogramada',
'post_title' => 'AçãoProgUser:' . $user_id . 'ListaDeCompras:' . $id_lista . '-Date:' . $dt_ppa,
'meta_input' => array(
'id_lista' => $id_lista,
'dt_programada' => $dt_ppa,
'frequencia' => '',
'status_ass' => $acao_ppa,
'dt_add' => $date_now,
'dt_edit' => $date_now,
)
);
$create_cancelamento = wp_insert_post($new_assinatura);
if ($create_cancelamento > 0){
$to = $user_email;
$subject = 'Sua Assinatura de Orgânicos será CANCELADA!';
$titulo_email = 'Sua assinatura foi cancelada';
$texto_email = 'Sua assinatura foi cancelada com sucesso. Caso deseje reativá-la, <a href="https://www.organicosinbox.com.br/minha-conta/">clique aqui</a> e volte a receber sua cesta a qualquer momento.<br/>Gratidão e até breve!';
//$texto_email = 'De acordo com os ajustes que você realizou no nosso site, a sua lista de compras será desativada no dia '.$dt_ppa_oriiginal.'. Caso deseje reativar basta acessar sua conta e cancelar o cancelamento.';
$body = customFormatMailOinb($titulo_email, $texto_email);
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail($to, $subject, $body, $headers);
print json_encode(array('success' => true, 'message' => 'Cancelamento efetuado'));
} else {
print json_encode(array('error' => false, 'message' => 'Cancelamento NÃO efetuado'));
}
}
解决方案
您确定Swal.fire
promise 以“值”对象键的形式返回其结果吗?
我会尝试一个
Swal.fire({
title: 'TEST',
text: "blabla",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Unsubscribe'
}).then(result => { console.log(result)})
.catch(error => { console.log(error) })
然后检查返回的结果对象。
另外我不会使用await
阻塞语句,JS本质上是异步的。此外,您实际上并不需要继续向用户显示模式,因为您将触发另一个警报反馈来判断操作是否成功。
推荐阅读
- reactjs - 地理编码反应传单
- java - Hibernate ORA-01792: 表或视图中的最大列数为 1000 - HBM 转换为注释
- c++ - 哪种实现对代码可读性更好?
- rust - 关于 Rust 的函数参数和所有权的一点问题
- git - 有没有办法使用 push.default = current 并将其设置为自动跟踪该远程分支?
- javascript - 是否可以不重建整个应用程序而仅在 Nextjs 中生成新的静态文件?
- pandas - 英国车牌 - 在字符串的不同部分互换 0/O
- java - Reactor Kafka 中没有创建订阅错误
- ajax - 使用 ajax 重新加载部分页面
- r - 如何在 R 中为 Sobol 灵敏度分析创建采样矩阵(包“灵敏度”)