【发布时间】:2019-05-31 22:48:24
【问题描述】:
我正在尝试将 .ajax 调用转换为 fetch 调用。 ajax 可以工作,但是当我尝试在我的 wordPress php 文件中提取数据时,提取会出现 500 错误。
我对 fetch api 还很陌生,这就是我尝试学习它的原因。我查看了 MDN、wordPress 网站上的自定义钩子和 rest api,搜索了网络并搜索了堆栈溢出。他们谈论的只是ajax。我不知道我是否使用了错误的搜索词组,但我已经尝试了好几个小时并感到沮丧。
//working ajax in js file
createLike() {
$.ajax({
url: `${universityData.root_url}/wp-json/university/v1/manageLike`,
type: 'POST',
data: {'professorId' : 789},
success: response => {
console.log(response);
},
error: response => {
console.log(response);
}
});
//my conversion to fetch
createLike() {
const data = {
'professorId' : 789,
};
fetch(`${universityData.root_url}/wp-json/university/v1/manageLike`, {
headers: {
'X-WP-Nonce' : universityData.nonce,
'Content-Type' : 'application/json'
},
credentials: 'same-origin',
method: 'POST',
body: JSON.stringify(data),
}).then(function(response){
return response.json();
}).then(response => {
console.log(response);
}).catch(err => console.log(`error : ${err}`))
},
//php file
function createLike($data) {
$professor = sanatize_text_field($data['professorId']);
wp_insert_post(array(
'post_type' => 'like',
'post_status' => 'publish',
'post_title' => '3rd PHP Create Post Test',
'meta_input' => array(
'liked_professor_id' => $professor
)
));
}
function universityLikeRoutes() {
register_rest_route('university/v1', 'manageLike', array(
'methods' => 'POST',
'callback' => 'createLike',
));
}
add_action('rest_api_init', 'universityLikeRoutes');
我的错误
{code: "internal_server_error", message: "The site is experiencing technical difficulties.", data: {…}, additional_errors: Array(0)}
additional_errors: []
code: "internal_server_error"
data: {status: 500}
message: "The site is experiencing technical difficulties."
__proto__: Object
【问题讨论】:
-
好吧,您在 fetch 中设置了一个
X-WP-Nonce标头,而您在 Ajax 中似乎没有这样做。也许与此有关? -
我这样做是因为我的其他 fetch 调用需要它,但后来将它注释掉了,它没有任何区别。
标签: php ajax fetch-api wordpress-rest-api