Como usar corretamente wp.ajax.post?

Depois de lutar por silêncio enquanto as funções wp utils enviam e publicam. Não consegui que um deles funcionasse corretamente, afinal.

Mas consegui obter uma resposta, no entanto, não sei por que isso funciona e as outras coisas que tentei não.

Para este tópico, o PHP não é relevante. Para evitar confusões, considere estar usando o seguinte PHP:

add_action('wp_ajax_example_action', function() { if (!empty($_REQUEST['foo'])) { print 'Foo: '.$_REQUEST['foo']; } wp_die(); }); 

O javascript que SEMPRE retornou todo o texto impresso / repetido na function php desencadeada, independentemente das condições encontradas.

 $('.some-button').click(function(e)) { e.preventDefault(); window.wp.ajax.send('example_action', { data: { foo: $('.some-field').val() }, error: function( response ) { console.log(response) } }); 

Aqui, o resultado de um teste simples:

 |================================================| | $('.some-field').val() | console.log(response) | |------------------------|-----------------------| | "bar" | "Foo: bar" | | "" | "Foo: " | |================================================| 

Eu tentei muitas coisas com o método send() , bem como com o método post() . Mas nada parece funcionar a menos que seja exatamente como o javascript acima. Sim, ele só funciona com error propriedade não com done ou success nem com fail ou always .


Editar # 1

Dê uma olhada no seguinte código onde eu explico o que acontece com o código que não retorna uma resposta.

 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); }); 

No entanto, na seção de rede da ferramenta do meu desenvolvedor, a solicitação e a resposta são mostradas corretamente.

Solutions Collecting From Web of "Como usar corretamente wp.ajax.post?"