Jquery submit.ajax调用是否需要包装在$(函数(){})中
我有一个ajax提交,无论我尝试了什么,它都不会运行。直到我发现一个教程将提交包装在Jquery submit.ajax调用是否需要包装在$(函数(){})中,jquery,form-submit,Jquery,Form Submit,我有一个ajax提交,无论我尝试了什么,它都不会运行。直到我发现一个教程将提交包装在$(函数(){})中呼叫。然后我将我的.submit包在一个函数调用中,它似乎已经起作用了。让我感到困惑的是,我还有其他的。提交ajax函数调用,这些调用在没有包装在函数中的情况下也能正常工作。我想知道我是否遗漏了一个我不理解的jQuery细微差别 为了更充分地说明我的意思,这里是我的函数在我将它包装成函数之前和之后 以前 $("#FormPutMsg1").submit(function (e) { d
$(函数(){})中代码>呼叫。然后我将我的.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;
});
$(“#FormPutMsg1”)。提交(函数(e){
调试器;
e、 预防默认值();
//animateSpinner();
var theURL=this.action;
var type=“POST”//this.methd;
var data=$(this.serialize();
$.ajax({
url:this.action,
类型:this.method,
数据:$(this).serialize(),
数据类型:“json”,
成功:功能(结果){
调试器;
var数据=结果;
if(data.split(“:”)[0]=“Error”){
//$(“#列表”).unblock();
$('resultDiv').html('p style=“color:'ff00ff”>'+data+'');
setTimeout(函数(){
$('#resultDiv').html(“”);
}, 10000);
}
否则{
绑定数据(数据);
}
}
});
返回false;
});
之后(这一个有效)
$(函数(){
$(“#FormPutMsg1”).submit(函数(e){
调试器;
e、 预防默认值();
//animateSpinner();
var theURL=this.action;
var type=“POST”//this.methd;
var data=$(this.serialize();
$.ajax({
url:this.action,
类型:this.method,
数据:$(this).serialize(),
数据类型:“json”,
成功:功能(结果){
调试器;
var数据=结果;
if(data.split(“:”)[0]=“Error”){
//$(“#列表”).unblock();
$('resultDiv').html('p style=“color:'ff00ff”>'+data+'');
setTimeout(函数(){
$('#resultDiv').html(“”);
}, 10000);
}
否则{
绑定数据(数据);
}
}
});
返回false;
});
});
在我将我的函数包装到函数中之前,常规提交功能是预先启用的(因为我想e.preventDefault从未被调用)。我是否遗漏了一些东西,先生们(女士们)?原始代码块将永远不会执行,因为“#FormPutMsg1”还不存在。第二个代码块在页面加载后执行,因此“#FormPutMsg1”将存在
$(“#FormPutMsg1”).submit()需要执行触发器。用“$(function(){})”包装它将在页面加载时执行块。您还可以使用“单击”事件触发它
“$(function(){})”是“$(document.ready(function(){})”的快捷方式。基于我的专业知识(这并不太棒),我认为“$(function(){})”与document.ready是一样的
唉,这个函数中的脚本将在DOM完全加载时执行
在第一种情况下,脚本试图在加载元素之前执行,因此无法工作
在第二种情况下,脚本将等待DOM中的所有元素加载完毕后再执行。我不想在这里引起争议,但我有这样做的代码。它没有包装在documenet.ready或任何类型的函数调用中。但代码仍然可以执行。我肯定也缺少一些东西。“after”代码被包装在“$(function(){}”中。我不明白你为什么说不是。“$(function(){})”将在页面加载后执行代码。我的意思是说,我在其他地方有其他代码没有包装在其中,或者确实可以工作。
$(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;
});
});