为什么我的ajax请求失败, 但仍上传我的帖子。我该如何防止失败。
我的ajax请求代码在:
createRate(){
var ourNewPost = {
'title': $(".new-rate-title").val(), 'content': $('.new-rate-body').val(), 'rate': $('.custom-star:checked').val(), 'productId': $('.submit-rate').data('id')
}
$.ajax({
// adding nonce key to make wordpress know we are looged in and has the permision to do that method.
beforeSend: (xhr) => {
xhr.setRequestHeader('X-WP-Nonce', ylsData.nonce);
}, url: ylsData.root_url + '/wp-json/yls/v1/rating/', type: 'POST', data: ourNewPost, success: (response) => {
console.log('congrats');
console.log(response);
}, error: (response) => {
console.log('failed');
console.log(response);
}
});
}
我的php自定义rest api代码:
add_action('rest_api_init', 'ylsRateRoute');
function ylsRateRoute(){
register_rest_route('yls/v1', 'rating', array(
'methods' => 'POST', 'callback'=> 'createLike'
));
}
function createLike($data){
if(is_user_logged_in()){
$title = sanitize_text_field($data['title']);
$content = sanitize_text_field($data['content']);
$rateNum = sanitize_text_field($data['rate']);
$productId = sanitize_text_field($data['productId']);
if(get_post_type($productId) == 'product'){
return wp_insert_post(array(
'post_type' => 'rate', 'post_status' => 'publish', 'post_title' => $title, 'post_content' => $content, 'meta_input' => array(
'rate_related_product' => $productId, 'rating_rate' => $rateNum
)
));
}else{
die("Invalid product id");
}
}else{
die("you must be logged in first");
}
}
上载失败的图片:
控制台中的失败消息
如果我添加dataType:’text’, 它会成功, 但是端点返回有关我要阻止的帖子的所有这些详细信息。我只想保留方法wp_insert_post()返回的ID。它出现在ajax响应的responseText的末尾。
寻求所有帮助。
#1
在尝试解决这个问题很多小时之后, 我发现问题出在帖子类型名称上, 这是”评分”, 可能是它从woocommerce或我在wordpress网站上使用的其他东西保存的帖子类型。但是我将其从”费率”更改为其他一切正常的工作。
评论前必须登录!
注册