我正在使用 Wordpress,并且正在尝试为我的个人目的(学习)开发一个插件。
目前,我已经为插件激活和停用创建了一个主文件 (wp-maincat.php
),它在 WordPress 中创建了名为 categ_tag
的自定义表。
此文件还创建一个菜单并包含另外 3 个页面:
- Page.3:(问题)Wordpress“标签”页面的克隆。
在该页面中,我想在左侧创建提交部分,在右侧创建使用 AJAX 显示结果的表格,这样就无需重新加载页面。
问题是,当我按下提交按钮时,没有任何反应,或者更好的是我收到一个没有错误的 alert()
。另一方面,alert()
告诉我代码返回一个错误。另一个问题是我看不到数据库中是否已经有一些行。
如果我删除url:ajaxurl
,代码可以工作,但在responds div中它会加载整个wordpress页面。任何帮助,将不胜感激!
这是一些代码。
更新
这部分在数据库中添加条目
global $wpdb;
$table_name = $wpdb->prefix."categ_tag";
if(isset($_POST["content_txt"]) && strlen($_POST["content_txt"])>0) {
$contentToSave = $_POST["content_txt"];
$insert_row = $wpdb->query($wpdb->prepare(" INSERT INTO $table_name ( name_cats ) VALUES ('".$contentToSave."')"));
if($insert_row) {
$my_id = $mysqli->id; //Get ID of last inserted row from MySQL
echo '<li id="item_'.$my_id.'">';
echo '<div class="del_wrapper"><a href="#" class="del_button" id="del-'.$my_id.'">';
echo '<img src="images/icon_del.gif" border="0" />';
echo '</a></div>';
echo $contentToSave.'</li>';
}else{
header('HTTP/1.1 500 Looks like mysql error, could not insert record!');
exit();
}
}
?>
这是生成问题的代码部分 (ajaxurl
)
<script>
jQuery(document).ready(function($){
$("#publish").click(function (e) {
e.preventDefault();
var myData = 'content_txt='+ $("#name_cats").val();
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
jQuery.ajax({
type: "POST",
url: ajaxurl, // <------- The problem is here
dataType:"text",.
data:myData,
success:function(response){
$("#responds").append(response);
$("#name_cats").val('');
$("#publish").show();
$("#LoadingImage").hide();
},
error:function (xhr, ajaxOptions, thrownError){
alert(thrownError);
}
});
});
});
</script>
表格
<h2>Category Tags</h2>
<div id="col-left">
<h3>Add New Category</h3>
<form id="addcats" method="post">
<div class="form-field">
<label for="tag-name">Name</label>
<input id="name_cats" name="name_cats" type="text" style="width: 95%" value="<?php echo esc_attr($item['name_cats'])?>" class="code" required />
</div>
<p class="submit">
<input type="submit" name="publish" id="publish" class="button" value="Submit" />
</p>
</form>
</div>
<div id="col-right">
<h3>Category List</h3>
<ul id="responds">
</ul>
</div>
最佳答案
我建议通过 Ajax 发布数据的最简单方法:
jQuery('#category').on('change', function() {
var sel_id = this.value; // or $(this).val()
jQuery.ajax({
type: "POST",
url: "<?php echo get_site_url().'/ajaxdataform.php'; ?>",
data: {sel_id: sel_id },
success: function(data) {
if(data != ''){
jQuery('#sub_category').html(data);
}else{
jQuery('#sub_category').attr('disabled', true);
}
},
});
});
从“ajaxdataform.php”的另一端,我们得到如下的发布数据:
<?php
require( dirname(__FILE__).'/wp-load.php' );
$sel_id = $_POST['sel_id'];
$sql = "SELECT * FROM job_sub_category WHERE cat_id = $sel_id";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
echo $row['sub_category'];
}
像这样,您可以触发插入查询。
关于mysql - Wordpress Ajax 向 MySQL 插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23968186/