我已经使用Ajax
一个多月了,我一直在转换我的很多文档来使用JQuery/Ajax
。我发现很多代码都是多余的,所以我一直在从一个文档复制/粘贴到另一个文档。不过今晚,在复制/粘贴了一些Ajax
代码后,我忘了将url
更改为反映我粘贴到的文档。但是当我运行它时,代码工作了,使用 ajax's
data
从另一个文档调用PHP
。虽然这效果很好,并且肯定会减少文件大小和大量复制/粘贴,但我需要知道这是否是不好的做法?
例如,我的工作文档是wsparticipation.php
:
function loadgroups() {
$.ajax({
url: 'wsparticipation.php',
type: 'POST',
async: false,
data: { 'setgroups': 1 },
success: function(re) {
$('#groupid').html(re);
}
});
}
它下面的一个函数,我从 wsmonthlyreport.php
粘贴的函数,使用 url : wsmonthlyreport.php
.而且我没有将getmonth
或getyear
"程序"复制到wsparticipation.php
,但它就像我这样做一样工作。
function loadmonthyear(){
$.ajax({
url: 'wsmonthlyreport.php',
type: 'POST',
async: false,
data: { 'getmonth': 1 },
success:function(re) {
$('#showmonth').val(re);
$.ajax({
url: 'wsmonthlyreport.php',
type: 'POST',
async: false,
data: { 'getyear': 1 },
success: function(re){
$('#showyear').val(re);
}
});
}
});
}
那么,从另一个url
而不是当前url
调用程序是好的做法还是坏做法?
@Landslyde,我只是检查您的代码并检查所有注释。 你正在以一种很好的方式编写 Ajax。 如果需要,您也可以使用错误和发送块之前。
如果需要,我们应该在某些特殊情况下使用 async: false。将 async 设置为 false 意味着要调用的语句必须先完成,然后才能调用函数中的下一条语句。如果设置 async: true,则该语句将开始执行,并且无论异步语句是否已完成,都将调用下一条语句。
由于我可以签入调用的函数 loadmonthyear(),因此无需设置 asyc:false,因为这只会在第一个请求成功后调用。
我不能这么说:
async : false
编码的约定很糟糕,如果它真的很糟糕,那么为什么jQuery开发那个。使用 async:false 不允许浏览器在 ajax 完成之前运行代码,这些代码写在 ajax 代码的正下方;浏览器停止执行以完成我们称之为同步调用的 AJAX 调用。
假设,我们需要初始化 JQuery UI 组件并且数据必须从 ajax 加载,UI 组件可以在没有数据的情况下初始化,以确保这样的 async:false 只是保证的方式,否则对于一般用途你应该使用 async:true;