php - Ajax 无法与 wpdb 一起使用
问题描述
我有我在 Ajax、PHP 和 Mysql 中创建的简单代码,此代码在所有条件下都可以正常工作,除了一个是 wpdb 代码,用于将数据插入表
<script type="text/javascript">
function _(id){ return document.getElementById(id); }
function submitForm(){
_("status").innerHTML = 'please wait ...';
var formdata = new FormData();
formdata.append( "m", _("m").value );
var ajax = new XMLHttpRequest();
ajax.open( "POST", "<?php bloginfo('template_directory'); ?>/ajax-insert.php" );
ajax.onreadystatechange = function() {
if(ajax.readyState == 4 && ajax.status == 200) {
if(ajax.responseText == "empty"){
_("status").innerHTML = '<div class="error"><p>Please Fill all of the Fields</p></div>';
}
if(ajax.responseText == "Done"){
_("status").innerHTML = '<div class="success"><p>Done</p></div>';
}
if(ajax.responseText == "error"){
_("status").innerHTML = '<div class="success"><p>Problem</p></div>';
}
}
}
ajax.send( formdata );
}
</script>
<form action="" onsubmit="submitForm(); return false;">
<div id="status"></div>
<label>Your Message</label><br>
<textarea cols="50" rows="10" type="text" name="m" id="m"></textarea>
<br>
<input name="submit" type="submit" value="Send">
</form>
ajax-insert.php 我已经编写代码以在某些条件下插入数据这是代码
<?php
if(isset($_POST['m'])){
$message = $_POST['m'];
date_default_timezone_set("Africa/Cairo");
$date = date("Y/m/d h:i:sa");
}if(empty($message))
echo "empty";
elseif(!preg_match("~^[0-9a-z\-'\s\p{Arabic}]{1,60}$~iu", $message)){
echo "error";
}else{
echo "Done";
$insert = $wpdb->insert( 'chat_support', array( 'id' => '1', 'message' => $message , 'date' => $date, 'user' => $user_ID));
}
?>
如果我尝试在 textarea 为空时提交表单,它会给我响应它是空的,但是当我写任何东西以在数据库中提交代码时出现问题 Else dosen 不起作用响应是请稍候.....和这个没有做和事的反应还有更多的时间
解决方案
强烈建议使用 WordPress Ajax 操作,您需要将要调用的函数连接到 wp_ajax 并且它将在整个 wp 环境中可用
可以从这里查看有关如何创建和调用 ajax 函数的详细信息https://codex.wordpress.org/AJAX_in_Plugins
推荐阅读
- swift - 如何从 DropBox swift 获取文件/文件夹列表?
- regression - 如何从Stata中的分类变量自动创建虚拟变量?
- python - findfont:找不到字体系列 ['Tahoma']。回到 DejaVu Sans
- html - 如何使用 scss 生成边框宽度实用程序
- javascript - 谷歌应用脚本时间戳
- java - 如何忽略应用程序属性中的最后一个逗号
- ios - 检测何时做出斩波动作 - Swift
- vuejs2 - 使用 v-model 在输入中添加字母
- javascript - 如何使用 Browserify 在 Gulp 4 中导入/导出模块?
- python - 如何在python中修复此文件“未找到”错误?