[英]I Am Encountering An 400 Bad request Error In Wordpress While Making Call With wp_ajax
[英]wordpress wp_ajax returning 400 bad request
瀏覽器控制台返回錯誤:400 bad request
通過將響應值從 0 更改為 1,我在 admin-ajax.php 文件中將錯誤跟蹤到了這一部分:
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 );
}
我嘗試了一切,但不幸的是我不明白這個登錄的真正含義以及它是如何工作的。
我看到有些人對主機有問題,就我而言,我使用的是托管程序。 (我認為這無關緊要,但在這里。)
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);}
函數.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="">
這是您使用 FormData 的方式:
var formData = new FormData();
formData.append("subject", "value");
formData.append("message", "hello value");
這是對我有用的代碼:(我認為唯一的區別是網址)
var url = "<?php echo admin_url('admin-ajax.php'); ?>";
function do_ajax() {
var request = new XMLHttpRequest();
request.open("POST", url + "?action=process_contact_form");
request.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
alert(this.responseText);
}
};
var formData = new FormData();
formData.append("subject", "value");
formData.append("message", "hello value");
request.send(formData);
}
在服務器上:
add_action('wp_ajax_nopriv_process_contact_form', 'process_contact_form');
add_action('wp_ajax_process_contact_form', 'process_contact_form');
function process_contact_form()
{
echo $_POST["message"];
die();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.