【问题标题】:JQuery POST to wordpress PHP plugin executionJQuery POST 到 wordpress PHP 插件执行
【发布时间】:2020-02-16 18:24:24
【问题描述】:

我的 Wordpress 页面上有一个脚本,通过可视页面构建器中的代码块实现。我想知道的是,如何通过正确的 URL 来访问我的 PHP 文件?由于它位于页面构建器的块中,因此我认为我不能使用 ajax_admin 作为 url,因为该文件从未入队。


$("#submit_button").click(function(e,features,totalcost){
  e.preventDefault();
   console.log('clicked')
     $.ajax({
     type: "POST",
     url: '/wp-content/plugins/estimate/estimate.php',
      data: {
      action: 'submitWizard',
// add your parameters here
      features: features,
      total:totalcost,
      email:$("#exampleInputEmail1").value,
      name:$("#exampleInputPassword1").value,
      message:$("#exampleFormControlTextarea1").value,
      },
      success: function(response){
      console.log(response);
      }
      });
})

我有一个插件,叫做estimate,代码如下:


 add_action( 'wp_ajax_submitWizard', 'process_estimate' );

function process_estimate(){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $features = $_POST['features'];
    $total = $_POST['total'];

    wp_mail( 'charlespettisappdevelopment@gmail.com', 'New Submission!', "
        $name,
        $email,
        $message,
        $features,
        $total,
  ");
}

【问题讨论】:

  • 那么问题出在哪里?
  • @ezra ,抱歉,这可能有用。尝试调用此函数时出现 500 个服务器错误。我想我的问题是,如何在 jquery 帖子设置中传递正确的 URL。
  • a 500 post 错误意味着服务器端的错误。这意味着您的 php 代码存在问题。另外,去chrome开发者工具看看post参数是否发送正确

标签: javascript php jquery ajax wordpress


【解决方案1】:

在您的estimate.php 上添加此代码:

add_action( 'wp_enqueue_scripts', 'wi_enqueue_scripts' ); 
function wi_enqueue_scripts(){
    wp_localize_script( 'wi-ajax-script', 'wi_ajax_params', 
        array(
            'wi_ajax_nonce' => wp_create_nonce( 'wi_ajax_nonce' ),
            'wi_ajax_url' => admin_url( 'admin-ajax.php' )
        )
    );
}

然后在 javascript 文件中使用这个:

$("#submit_button").click(function(e, features, totalcost) {
    e.preventDefault();
    console.log('clicked')
    $.ajax({
        type: "POST",
        //url: wi_ajax_params.wi_ajax_url,
        url: "http://yourdomain.com/wp-admin/admin-ajax.php",
        data: {
            action: 'submitWizard',
            // add your parameters here
            features: features,
            total: totalcost,
            email: $("#exampleInputEmail1").value,
            name: $("#exampleInputPassword1").value,
            message: $("#exampleFormControlTextarea1").value,
        },
        success: function(response) {
            console.log(response);
        }
    });
});

最后,将这段代码再次添加到插件文件中:

add_action( 'wp_ajax_submitWizard', 'process_estimate' );
add_action( 'wp_ajax_nopriv_submitWizard', 'process_estimate' );
function process_estimate(){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $features = $_POST['features'];
    $total = $_POST['total'];

    wp_mail( 'charlespettisappdevelopment@gmail.com', 'New Submission!', "
        $name,
        $email,
        $message,
        $features,
        $total,
  ");
}

未经测试,但它应该可以工作。告诉我。

【讨论】:

  • 嘿伙计,感谢您抽出宝贵时间,我认为 whis 会起作用,但我得到“wi_ajax_params 未定义”。你认为这可能是因为我在 wordpress 可视化构建器的
  • 也许吧。您可以创建一个 js 文件并使用 wi-ajax-script 这个处理程序加入队列。然后将js代码粘贴到那里。
  • @CharlesPettis 或者您可以更改此url: "http://yourdomain.com/wp-admin/admin-ajax.php",yourdomain.com 应替换为您的域名
  • 完美!谢谢~
猜你喜欢
  • 1970-01-01
  • 2011-02-24
  • 2017-07-25
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-03
  • 2016-09-17
相关资源
最近更新 更多