【问题标题】:Wordpress Ajax insert data to MySQLWordpress Ajax 向 MySQL 插入数据
【发布时间】:2014-07-21 00:22:36
【问题描述】:

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

此文件还创建一个菜单并包含另外 3 个页面:

  • Page.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>

【问题讨论】:

  • 你能发一个MCVE吗?请强调minimal ;)
  • 在某些部分拆分了代码。整个源代码在一页中!

标签: mysql ajax wordpress


【解决方案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);
            }
        },     
    });
});

从“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'];
}

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

【讨论】:

  • 我找到了一种不使用 Ajax 或更好地使用 wordpress Table_list 选项的更好方法,因此它可以处理所有事情。还是谢谢你
猜你喜欢
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 2014-02-01
  • 1970-01-01
  • 2014-01-13
相关资源
最近更新 更多