duancai1904 2017-03-29 18:23
浏览 149
已采纳

WordPress按钮触发了ajax请求

So I have actually read stackoverflow questions about this, but they are somewhat quite old to work with newest version of wordpress.

My end goal is to submit to database some data from my forms but for now ajax response is not working for me. On custom page load in WP all code is loaded so all functions should work. All of this is inside of PHP file for now that why echo is used to create JS scripts. Here's the important part of my code

echo '<button id="ZapisPrace">Save</button>
<script>
jQuery("#ZapisPrace").click(function($){
    var data={
        action: "addToDB",
        info: "nomz"
    };
    jQuery.post(ajaxurl,data,function(response){
    alert("Response was "+ response);
    });
});
</script>';
add_action('wp_ajax_addToDB','pridajDoDB');
function pridajDoDB(){
    echo '<script>console.log("AAA")</script>';
    wp_die();
}

Using current version of WP so variable ajaxurl is pointing to the

/wordpress/wp-admin/admin-ajax.php

No console.log is happening, response is always 0, even when I remove pridajDoDB function or add_action. It's just not triggering the ajax request correctly. Can somebody let me know why? Also I have not used yet functions like wp_localize_script, wp_register_script or wp_enqueue_script because all of this is in one PHP file that's loaded, and I don't need to import jquery as far as I know its default available in WP. I am just learning how to use WP, PHP AJAX and jQuery, so I have still quite a lot to learn.

PS: I am supposed to use the WP way of using ajax.

  • 写回答

2条回答 默认 最新

  • doudou3213 2017-03-31 08:49
    关注

    Ok so I didn't figure out how code above works, however I managed to get it working trough different wp structure I found online:

    BTW: I used onClick function here but it works even when replaced with jQuery click event.

    add_action('wp_ajax_addToDB','pridajDoDB');
    
    echo '<button onClick='triggerAjax()'>Save</button>?>';
    
    <script>
    function triggerAjax(){
        <?php $nonce = wp_create_nonce( 'subbmitData' );?>//used so ajax response can verify from where is the request coming
        jQuery.ajax({
            type: "post",url: "admin-ajax.php",data: { action: 'addToDB', _ajax_nonce: '<?php echo $nonce; ?>' },
            success: function(html){
                    console.log(html);//this will console log everything that happens in ajax called php function. Echo works as well.
                }
            });
        }
    </script>
    <?php
    
    function pridajDoDB(){
        check_ajax_referer( "subbmitData" );//this check from where is the request coming from
        //here database commands works but if you echo or console log something it will be just passed to success function above
        die();
    }
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价