【问题标题】:What is the best way to post input data and insert them to the database with ajax in wordpress?在wordpress中使用ajax发布输入数据并将它们插入数据库的最佳方法是什么?
【发布时间】:2023-04-10 02:56:02
【问题描述】:

我用纯 PHP 和 HTML 开发了一个联系表单。我想用 AJAX 将输入值插入到数据库中。这是我的 Javascript/jQuery 代码:

var email = jQuery("#email").val();

var data = {
    'email': email
}            

jQuery.ajax({
    type: "POST",
    url: "http://mywebsitedomain.com/wp-content/themes/mytheme/contactform.php",
    dataType: "json",
    data: data,
    success : function(data) {
      // do something
    }
});

还有我的contactform.php:

$date = date('Y-m-d H:i:s');
global $wpdb;
$wpdb->insert('myTableName', array(
    'email' => $_POST["email"],
    'date' => $date,
));

我的代码运行良好。我的问题是这样做的正确方法是什么?因为我认为在 WordPress 主题中创建一个 .php 文件并将其仅用于将数据插入数据库并不是一个好主意。我认为它存在安全问题,用户可以看到我的脚本 URL (http://mywebsitedomain.com/wp-content/themes/mytheme/contactform.php),它在我的 javascript 文件中用于使用 ajax。

你有更好的方法吗?

【问题讨论】:

    标签: javascript jquery ajax wordpress woocommerce


    【解决方案1】:

    创建一个用于插入数据的函数,并为 ajax 调用排队脚本并在 url 中传递它。例如:

    function mytheme_admin_scripts() {
        wp_enqueue_script( 'ajax-script',  get_stylesheet_directory_uri().'/admin_script.js');
        wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
    }
    add_action( 'wp_enqueue_scripts','mytheme_admin_scripts' );
    

    将您编写的 ajax 调用的 js 文件排入队列,并在您的 ajax url 中传递 my_ajax_object.ajx_url。

    jQuery.ajax({
            type : "POST",
            url :  my_ajax_object.ajax_url,
            data : data,
            dataType: "json",
            cache: false,
            success : function(data) {
                  // do something
            }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 2011-02-19
      • 1970-01-01
      相关资源
      最近更新 更多