Erro retornado no console do navegador: 400 bad request
Rastreei o erro ate essa parte no arquivo admin-ajax.php mudando o valor de resposta de 0 para 1:
if ( is_user_logged_in() ) {
// If no action is registered, return a Bad Request response.
if ( ! has_action( "wp_ajax_{$action}" ) ) {
wp_die( '0', 400 );
}
Tentei de tudo, mas infelizmente nao entendi oq realmente significa esse login e como ele funciona.
Vi algumas pessoas tendo problema com o host, no meu caso estou usando hostinger. (Nao creio que isso e relevante mas ta ai.)
Código utilizado:
Javascript
function formValidation() {
event.preventDefault();
var name = document.forms["contactForm"]["name"].value;
var email = document.forms["contactForm"]["email"].value;
var subject = document.forms["contactForm"]["subject"].value;
var message = document.forms["contactForm"]["message"].value;
document.getElementById('status').innerHTML = '';
var errorMessage="<span class='error'>All fields are required.</span>";
var regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
if (name.trim() == "" ||email.trim() == "" || subject.trim() == "" || message.trim() == "") {
document.getElementById('status').innerHTML = errorMessage;
return false;
}
if (!regEx.test(email)) {
var errorMessage="<span class='error'>Invalid email.</span>";
document.getElementById('status').innerHTML = errorMessage;
return false;
}
processContactSubmit();
return true;
}
function processContactSubmit() {
var request = new XMLHttpRequest();
request.open("POST", "/wp-admin/admin-ajax.php?action=process_contact_form");
request.onreadystatechange = function() {
if(this.readyState === 4 && this.status === 200) {
document.getElementById("status").innerHTML = this.responseText;
}
};
var myForm = document.getElementById("contactForm");
var formData = new FormData(contactForm);
request.send(formData);
}
functions.php
add_action('wp_ajax_nopriv_process_contact_form', 'process_contact_form');
add_action('wp_ajax_process_contact_form', 'process_contact_form'); //Retirar essa parte para error no console, no contrario ira aparecer no navegador o numero 0.
function process_contact_form() {
$to = "Recipient Email Address";
$subject = $_POST["subject"];
$headers = "Testing";
$message = $_POST["message"];
$attachments = "";
$sent = wp_mail($to, $subject, $message, $headers, $attachments);
if (! $sent) {
echo "<span class='error'>Problem in sending mail.</span>";
} else {
echo "<span class='success'>Hi, thank you for the message.</span>";
}
wp_die();
}
Html
<form name="contactForm" id="contactForm" method="post" onsubmit="return formValidation()" action="">
<p class="comment-form-comment"><textarea id="message" name="message" required="" placeholder="" aria-required="true"></textarea></p>
<p class="comment-form-author"><label for="author">Nome: </label> <input id="name" name="name" required="" size="30" type="text" value=" " /></p>
<p class="comment-form-author about"><label for="author">Assunto: </label> <input id="subject" name="subject" required="" size="40" type="text" value=" " /></p>
<p class="comment-form-email"><label for="email">Email: </label> <input id="email" name="email" required="" size="30" type="text" value="" /></p>
<p class="form-submit"><input id="submit" class="submit" name="email_contato" type="submit" value="Enviar" /></p>
</form>
<h3><div id="status"></div></h3>
Estou tentando pegar dados de algumas ordens de uma API. Primeiro preciso pesquisar todas as ordens com uma requisição e depois de pegar o id dessas ordens fazer outra requisição para outra uri da API para pegar os dados de cada ordem. O problema é que não consigo resgatar os dados de retorno através de um array.
Segue uma tentativa sem sucesso
// request de busca
const data = await request.get("api.com/search", async(err, data, body)=>{
var arr = []
for(i=0;i<data.length;i++){
const result = await request.get("api.com/order/"+data.id, (e, d, b)=>{
arr.push(d.title)
return arr
})
}
return result;
})
console.log(data)
Fiz esse código pelo celular só pra exemplificar um dos métodos. Alguém sabe como posso fazer isso funcionar ou se tem uma maneira mais fácil? Obrigado
Estou desenvolvendo um sistema web em PHP e banco de dados MySql. O mesmo terá um endereço único para ser acessado através de outras urls. A ideia é que o sistema seja único e sem a necessidade de ser instalado em outras urls e apenas acessado remontamente.
Dentro do meu pouco conhecimento penso em fazer isso criando uma estrutura de frames e setando pra o sistema, ou, usando o método request com Ajax setando o sistema para uma div.
Gostaria de sugestões sobre esses métodos? Ou então se existem outras opções pra que eu possa pesquisar mais.
Estou realizando um formulário em ajax e estou tendo alguns problemas na parte jQuery/Ajax.
O formulário é enviado corretamente porém queria que ao ter sucesso no envio, ocultasse o form_envia_mensagem e exibisse uma div com mensagem "mensagem enviada". (coisa que não está acontecendo)
Como poderia resolver esse problema?
$('#form_envia_mensagem').submit(function(event) {
event.preventDefault();
var dados = $('#form_envia_mensagem').serialize();
$.ajax({
method: 'POST',
dataType: 'json',
url: 'http://meulinklink.com.br/post',
async: true,
data: dados,
success: function(response) {
$('#form_msg_ao_vivo').hide();
$('#mensagem-enviada').show();
}
});
$("#mensagem").val("");
return false;
});