【发布时间】:2020-05-21 22:13:37
【问题描述】:
我正在尝试将表单数据发送到名为attendants 的表中。我创建了表单、AJAX 和查询,但是在尝试测试(提交表单时)时,我在控制台上看到 POST http://localhost/rsvp/wp-admin/admin-ajax.php 400 (Bad Request) 错误。
不确定是什么原因造成的,因为当我运行 console.log(ajaxurl); 时,它返回的 URL 是 http://localhost/rsvp/wp-admin/admin-ajax.php,这是正确的。
不确定这里发生了什么?
编辑:我最近发现http://localhost/rsvp/wp-admin/admin-ajax.php 返回0。
form.php(文件夹路径:rsvp > template-parts > parts > form.php):
<div class="form sectionPadding" id="rsvp-form">
<form id="rsvpForm" method="post">
<?php get_template_part('template-parts/snippets/form-step-1'); ?>
<?php get_template_part('template-parts/snippets/form-step-2'); ?>
</form>
</div>
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
form.js(form.js 编译成theme.min.js。theme.min.js 的路径是 rsvp > assets > build > js > theme.min.js):
jQuery('#rsvpForm').on('submit', function(e) {
e.preventDefault();
jQuery.ajax({
action: 'send_to_db',
dataType: "text",
type: "post",
data: $('form').serialize(),
url: ajaxurl,
success: function(data) {
console.log(data);
},
error: function() {
console.log("Error");
}
});
});
functions.php
add_action("wp_ajax_send_to_db", "send_to_db");
add_action("wp_ajax_nopriv_send_to_db", "send_to_db");
function send_to_db(){
if (isset($_POST['submit'])) {
global $wpdb;
$first_name = $_POST['fname'];
$table_name = $wpdb->prefix . "attendants";
$row_result = $wpdb->query("INSERT INTO $table_name (first_name) VALUES ('$first_name')" );
if ($row_result == 1){
echo "submitted";
} else{
echo "error";
}
die();
}
}
总结一下,我的文件夹结构是:
rsvp
assets
build
js
theme.min.js
template-parts
parts
form
form.php
form.js
functions.php
【问题讨论】:
-
HTTP 400 错误不像 404(找不到文件) - 这是一个 错误请求 错误 -
the server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing). -
@JaromandaX - 是的,我最初读到它与其他问题中缺少钩子有关。但是我的钩子也出现在
functions.php中,所以不确定是什么原因造成的 -
路径
rsvp/wp-admin/admin-ajax.php与fuctions.php中的任何内容有什么关系?没看到 -
@JaromandaX - 不太清楚你的意思?
-
网址是
http://localhost/rsvp/wp-admin/admin-ajax.php...这个文件存在吗?
标签: javascript php jquery ajax wordpress