Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止在加载html页面时执行javascript_Javascript_Html_Ajax - Fatal编程技术网

防止在加载html页面时执行javascript

防止在加载html页面时执行javascript,javascript,html,ajax,Javascript,Html,Ajax,我尝试使用ajax提交表单,因此我编写了以下脚本: $(document).ready( function doAjaxPost() { var email = $('#user_email').val(); var firstName = $('#user_firstName').val(); var lastName = $('#user_lastName').val(); var password = $('#user_p

我尝试使用ajax提交表单,因此我编写了以下脚本:

$(document).ready(  
function doAjaxPost() {
        var email = $('#user_email').val();
        var firstName = $('#user_firstName').val();
        var lastName = $('#user_lastName').val();
        var password = $('#user_password').val();

        $
                .ajax({

                    type : "POST",
                    async: false ,
                    url : "home1",
                    data : "email=" + email + "&firstName=" + firstName
                            + "&lastName=" + lastName + "&password=" + password,

                    success : function(response) {

                        alert('Error: '+ "test");
                        if(response.result=="error")
                        $('#info').html(
                                response.message);

                    },

                    error : function(e) {

                        alert('Error: ' + e);

                    }

                });

    }
);
$('#myForm').submit(doAjaxPost());
然后我把它包含在我的page.html中

但当我加载页面时,脚本会执行,但脚本必须截获提交事件


加载页面时如何防止脚本执行?

我认为您的问题是最后一行代码:

$('#myForm').submit(doAjaxPost());
通过这段代码,您可以对jquery发出命令,向表单触发“提交”事件。尝试将其替换为:

$('#myForm').bind('submit', doAjaxPost);

只需交换最后两行并去掉async:false。

我想我已经找到了一个解决方案,将我的函数代码移动到提交范围:

$(document).ready(
$('#myForm').submit(function() {
    var email = $('#user_email').val();
    var firstName = $('#user_firstName').val();
    var lastName = $('#user_lastName').val();
    var password = $('#user_password').val();

    $
            .ajax({

                type : "POST",
                async: false ,
                url : "home1",
                data : "email=" + email + "&firstName=" + firstName
                        + "&lastName=" + lastName + "&password=" + password,

                success : function(response) {

                    alert('Error: '+ "test");
                    if(response.result=="error")
                    $('#info').html(
                            response.message);

                },

                error : function(e) {

                    alert('Error: ' + e);

                }

            });

})
);

您需要对参数进行URL编码。(或者让jQuery为您做这件事)。另外,永远不要使用
async:false
。为什么我需要URL编码?如果其中一个值有
&
?你是对的。尽管这不是我的问题,但我会考虑你的评论。谢谢你的回复,但我不明白你在ajax回调中提交表单是什么意思(很抱歉,我是ajax新手)。谢谢Mattia,我试过了,但不管用。