Handling an Ajax form submit

时间:2014-04-03 作者:Bob

我正在开发一个wordpress插件,它将创建一个联系表单,然后通过ajax请求提交详细信息。

        jQuery.ajax({

            type:"post",
            dataType:"json",
            url: ajaxurl,
            data: {action: \'submit_data\', info: info},
            success: function(response) {
                alert("Success");
            }
        });
这是处理ajax请求的函数:

add_action("wp_ajax_submit_data", "submit_data");
add_action("wp_ajax_nopriv_submit_data", "submit_data");

function submit_data() {


echo "<script> alert(\'Hello\');</script>";

die();
}
用户将单击以下链接提交表单:

$link = admin_url(\'admin-ajax.php?action=submit_data\');
<a  class="button" href="\'.$link.\'" style="background-color:white;color:black;">    <strong>Submit</strong></a>
单击提交链接后,我会收到Hello警报,然后转到带有URL的空白页面

http://localhost:81/wordpress/wp-admin/admin-ajax.php?action=submit_data
为什么它会把我带到一个空白页,而不是更新当前页?

编辑-------------------------------------------------

以下是完整的jquery函数:

$(".button").click(function() {

            $(".error").hide();

            var name = $(":input.name").val();
            if (name == "") {

                $("label#nameErr").show();
                $(":input.name").focus();
                return false;
            }

            var email = $(":input.email").val();
            if (email == "") {

                $("label#emailErr").show();
                $(":input.email").focus();
                return false;
            }


            var phone = $(":input.phone").val();
            if ((phone == "") || (isNaN(phone))) {

                $("label#phoneErr").show();
                $(":input.phone").focus();
                return false;
            }

            var info = \'name:\' + name + \'&email:\' + email + \'&phone:\' + phone;

            alert(info);

            jQuery.ajax({

                type:"post",
                dataType:"json",
                url: ajaxurl,
                data: {action: \'submit_data\', info: info},
                success: function(response) {
                    if (response.type == "success") {

                        alert("success");
                    }
                    else {

                        alert("fail");
                    }
                }
            });

            return false;


        });

1 个回复
SO网友:RRikesh

您应该从定位标记中删除链接:

<a  class="button" href="#" style="background-color:white;color:black;"> 
  <strong>Submit</strong>
</a>
那么jQuery部分应该是:

$(\'a.button\').click(function(event){
    event.preventDefault();

    //your ajax gets here:
    jQuery.ajax({
            type:"post",
            dataType:"json",
            url: ajaxurl,
            data: {action: \'submit_data\', info: info},
            success: function(response) {
                alert("Success");
            }
        });
});

结束