我正在尝试使用简单的 ajax 调用过滤我的帖子,但无法使其正常工作,因为我的 admin-ajax.php 调用始终返回 0。 这个问题有很多问题,但它们大多通过添加 wp_die() 来解决, 这不能解决我的问题。
Ajax 调用:
$.ajax({
type: 'POST',
url: '/wp-admin/admin-ajax.php',
dataType: 'html',
data: {
action: 'filter_projects',
},
success: function(res) {
$('.project-tiles').html(res);
console.log(res);
}
})
PHP 函数:
function filter_projects() {
echo "<p>test</p>";
wp_die();
}
add_action('wp_ajax_filter_projects', 'filter_projects');
add_action('wp_ajax_nopriv_filter_projects', 'filter_projects');
PHP 函数已正确注册,因为我得到了 200,但它总是返回 0 和“成功”。
我已经尝试过的:
我不知道如何进一步调试它,因为它没有返回任何错误。
有人有想法吗?
答案 0 :(得分:-1)
不要直接回显您的 HTML,而是尝试使用 JSON 处理结果,以便您可以获得更好的结果来评估您的测试。 我将如何进行您发布的相同测试(使用直接 JS 而不是 JQUERY):
{.tabset .tabset-dropdown}
PHP 代码:
let xhr = new XMLHttpRequest();
xhr.open('POST', "/wp-admin/admin-ajax.php", true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
var params = 'action=filter_projects';
xhr.onreadystatechange = () => {
if(xhr.readyState == 4) {
// RETURN OK
if(xhr.status == 200) {
console.log(xhr.responseText); // TEXT RESPONSE
console.log(JSON.parse(xhr.responseText)); // JSON RESPONSE
// HTTP ERROR
}else{
console.log("SOME ERROR HTTP");
console.log(xhr.responseText);
}
}
};
xhr.send(params);