为什么我的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 【我的ajax请求失败,但是上传了我的帖子】在尝试解决这个问题很多小时之后, 我发现问题出在帖子类型名称上, 这是” 评分” , 可能是它从woocommerce或我在wordpress网站上使用的其他东西保存的帖子类型。但是我将其从” 费率” 更改为其他一切正常的工作。
推荐阅读
- 我的第一个WordPress主题从零开始。将样式表排队在functions.php文件中
- 在主题(v5)中设置标题的多站点WordPress API CORS问题
- 单个自定义帖子类型的多个模板
- 图片替代文本中包含多个字符串
- Muffin Builder有限制吗( (WordPress-是主题))
- 将WordPress主题模板文件移动到子目录
- 修改WPDownloadManager按钮链接颜色
- 修改WordPress模板-添加子菜单
- 在WordPress X中修改页脚