如果所有代码都在一个文件中,如何指定Ajax jquery url路径

时间:2016-02-21 17:17:11

标签: php ajax wordpress

我在指定Ajax jQuery url路径时遇到了问题。我有一个函数包含所有Html标记代码,php sned邮件代码和Ajax jQuery代码如下

如何在ajax代码中指定url属性?

信息我在我的插件目录

中使用了wordpress主题和此功能
<?php
    function bsncontact() {

        //All php codes here
?>
        <form id="ajax-contact" class="navbar-form" action="" method="POST">
            <!-- other html markup codes -->
        </form>
        <script type="text/javascript">
            jQuery(function(){
            jQuery.ajax({
                type: 'POST',
                url: '',
                data: "name=" + name + "&email=" + email + "&subject=" + subject + "&message=" + message,
                success: function(text) {

                }
           });
           });
       </script>
<?php
}
?>

3 个答案:

答案 0 :(得分:3)

正如你所说使用wordpress主题。在wordpress主题中,您可以非常轻松地在后端(管理面板)和主题前端的wordpress中注册ajax

首先您可以将ajax代码分开(例如将ajax代码放在myajax.js文件中),然后将其放在js文件夹中,并注册您的ajax代码(您在其中创建函数并注册这些脚本)和wordpress admin ajax使用wp_localize_scrip

对您的主题
function my_enqueue() {
    wp_enqueue_script( 'ajax-script', plugins_url( '/js/myajax.js', __FILE__ ), array('jquery') );
    wp_localize_script( 'ajax-script', 'ajax_object',array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234 ) );
}
add_action( 'admin_enqueue_scripts', 'my_enqueue' );

第二次将您的HTML表单代码放在单独的函数中,例如

<?php
    function myhtmlfunc() {
        //Your html contact form here
        //not important if form contain action="", you can remove it
    }
?>

直到现在很容易。

第三次将您的php已发送的邮件代码放在另一个函数中,并将Ajax放在Viewer-Facing Side上,用于僵尸程序记录和访问者用户abs AJAX in Plugins

<?php
    function myphpmail() {
        //Put all php codes here
    }
    add_action( 'wp_ajax_my_action', 'myphpmail' );
    add_action( 'wp_ajax_nopriv_my_action', 'myphpmail' );
?>

然后将ajax网址设置如下

$.ajax({
    type: 'POST',
    url:ajax_object.ajaxurl,
    success: function() {}
});

答案 1 :(得分:2)

在wordpress中你必须首先创建钩子。

要创建钩子,我们使用 add_action('wp_ajax_my_action','my_action_callback');

my_action_callback 是一个在调用“wp_ajax_my_action”动作时调用的函数。

我已更新您的代码 试试这个:

<?php
        add_action( 'wp_bsncontact', 'bsncontact' );
        function bsncontact() {
            //All php codes here
    ?>
            <form id="ajax-contact" class="navbar-form" action="" method="POST">
                <!-- other html markup codes -->
            </form>
            <script type="text/javascript">
                jQuery(function(){
                jQuery.ajax({
                    type: 'POST',
                    url: 'http://abcd.com/wp-admin/admin-ajax.php',
                    data: "action=wp_bsncontact&name=" + name + "&email=" + email + "&subject=" + subject + "&message=" + message,
                    success: function(text) {

                    }
               });
               });
           </script>
    <?php
    }
    ?>

要调用hook,您需要在ajax的数据中传递“action”,如上面的代码所示。

请根据您的要求修改此代码。

希望它对你有用。

答案 2 :(得分:0)

不确定你想要达到的目标,

尝试在ajax代码的网址中使用"<?php echo $_SERVER['PHP_SELF']; ?>"

PHP_SELF是一个返回正在执行的当前脚本的变量。