我有一个ajax提交,无论我尝试什么都无法运行。直到我找到一个包含在$(function () {});
调用中的提交的教程。然后我在函数调用中包装了我的.submit,它似乎有效。令我难以理解的是,我还有其他.submit ajax函数调用,它们也可以在函数中包含。我想知道我是否错过了我不理解的jQuery细微差别?
为了更全面地说明我的意思,这是我在函数中包装之前和之后的函数...
之前...
$("#FormPutMsg1").submit(function (e) {
debugger;
e.preventDefault();
//animateSpinner();
var theURL = this.action;
var type = "POST";//this.methd;
var data = $(this).serialize();
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
dataType: "json",
success: function (result) {
debugger;
var data = result;
if (data.split(':')[0] == "Error") {
//$("#list").unblock();
$('#resultDiv').html('<b><p style="color: #ff00ff">' + data + '</p></b>');
setTimeout(function () {
$('#resultDiv').html("");
}, 10000);
}
else {
binddata(data);
}
}
});
return false;
});
之后(这个有效)......
$(function () {
$("#FormPutMsg1").submit(function (e) {
debugger;
e.preventDefault();
//animateSpinner();
var theURL = this.action;
var type = "POST";//this.methd;
var data = $(this).serialize();
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
dataType: "json",
success: function (result) {
debugger;
var data = result;
if (data.split(':')[0] == "Error") {
//$("#list").unblock();
$('#resultDiv').html('<b><p style="color: #ff00ff">' + data + '</p></b>');
setTimeout(function () {
$('#resultDiv').html("");
}, 10000);
}
else {
binddata(data);
}
}
});
return false;
});
});
在我将函数包装到函数中之前,常规提交功能已经过时(因为e.preventDefault从未被调用过我认为)。我错过了绅士(和女士们)的一些事情吗?
答案 0 :(得分:1)
原始代码块永远不会被执行,因为“#FormPutMsg1”还不存在。第二个代码块在页面加载后执行,因此“#FormPutMsg1”将存在。
$(“#FormPutMsg1”)。submit()需要触发器才能执行。用“$(function(){})”包装它将在页面加载时执行块。您也可以使用点击“事件”触发它。
“$(function(){})”是“$(document).ready(function(){})”
的快捷方式答案 1 :(得分:1)
基于我的专业知识(这不是很棒),我认为“$(function(){})”与document.ready是一样的。
唉,这个函数里面的脚本将在DOM完全加载时执行。
在第一种情况下,脚本在元素加载之前尝试执行,因此它不起作用。
在第二种情况下,脚本会一直等到DOM中的所有元素在执行之前都已加载。