我正在使用Wordpress,我正在尝试为个人目的(学习)开发插件。
目前,我为插件激活和停用创建了一个主文件(wp-maincat.php
),并在Wordpress中创建了名为categ_tag
的自定义表。
此文件还会创建一个菜单,还包含3个页面:
在该页面中,我想在左侧和右侧创建提交部分,该表格使用AJAX显示结果,因此无需重新加载页面。
问题在于,当我按下提交按钮时,没有任何反应,或者更好的是我收到alert()
没有错误。另一方面,alert()
告诉我代码返回错误。另一个问题是我无法看到数据库中是否已有一些行。
如果我删除url:ajaxurl
,代码可以正常工作,但在响应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>
答案 0 :(得分:1)
我建议通过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);
}
},
});
});
来自&#34; ajaxdataform.php&#34;的另一端。我们得到这样的帖子数据:
<?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'];
}
像这样你可以触发插入查询。