在使用wp-utils函数send和post努力保持安静之后。毕竟,我没能让其中一个正常工作。
但我确实设法得到了回应,但我不知道为什么这是有效的,而我尝试的其他东西却没有。
对于本主题,PHP不相关。为了避免任何混淆,请考虑我正在使用以下PHP:
add_action(\'wp_ajax_example_action\', function() {
if (!empty($_REQUEST[\'foo\'])) {
print \'Foo: \'.$_REQUEST[\'foo\'];
}
wp_die();
});
javascript始终在触发的php函数中返回所有打印/回显文本,无论满足什么条件。
$(\'.some-button\').click(function(e)) {
e.preventDefault();
window.wp.ajax.send(\'example_action\', {
data: { foo: $(\'.some-field\').val() },
error: function( response ) {
console.log(response)
}
});
下面是一个简单测试的结果:
|================================================|
| $(\'.some-field\').val() | console.log(response) |
|------------------------|-----------------------|
| "bar" | "Foo: bar" |
| "" | "Foo: " |
|================================================|
我试了很多东西
send()
方法以及
post()
方法但是,除非与上面的javascript完全相同,否则似乎什么都不起作用。是的,它只适用于财产
error
不适用于
done
或
success
都没有
fail
或
always
.
请看一下下面的代码,我将解释不返回响应的代码会发生什么情况。
let post = window.wp.ajax.post(\'example_action\', { foo: $(\'.some-field\').val() });
console.log(post);
// logs: {state: ƒ, always: ƒ, then: ƒ, promise: ƒ, pipe: ƒ, ...}
post.done(function(v) {
// won\'t be executed
console.log(v);
});
然而,在我的开发人员工具的网络部分,请求和响应被正确显示。