防止在加载html页面时执行javascript
我尝试使用ajax提交表单,因此我编写了以下脚本:防止在加载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
$(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,我试过了,但不管用。