Wordpress Ajax将数据插入MySQL

时间:2014-05-31 08:52:26

标签: mysql ajax wordpress wordpress-plugin

我正在使用Wordpress,我正在尝试为个人目的(学习)开发插件。 目前,我为插件激活和停用创建了一个主文件(wp-maincat.php),并在Wordpress中创建了名为categ_tag的自定义表。

此文件还会创建一个菜单,还包含3个页面:

  • 第3页:(问题)Wordpress“标签”页面的克隆。

在该页面中,我想在左侧和右侧创建提交部分,该表格使用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>

1 个答案:

答案 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'];
}

像这样你可以触发插入查询。