我已经使用Ajax
一个多月了,我一直在转换我的很多文档以使用JQuery/Ajax
。我发现很多代码都是多余的,所以我一直在从一个doc复制/粘贴到另一个doc。今晚,在复制/粘贴一些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
调用程序?
答案 0 :(得分:1)
@Landslyde,我只是查看你的代码并查看所有评论。你正在以一种好的方式写ajax。你可以使用错误,如果需要也可以在发送块之前。
如果需要,我们应该在某些特殊情况下使用async:false。将async设置为false意味着您调用的语句必须在函数中的下一个语句被调用之前完成。如果设置async:true,则该语句将开始执行,并且无论异步语句是否已完成,都将调用下一个语句。
因为我可以检查被调用函数loadmonthyear(),所以不需要设置asyc:false因为这只会在第一次请求成功后调用。
答案 1 :(得分:0)
我不能这么说:
async : false
是编码的不好的惯例,如果它真的很糟糕,那么为什么jquery会开发那个。使用async:false不允许浏览器在ajax完成之前运行代码,这些代码写在ajax代码之下;浏览器停止执行完成ajax调用,我们称之为同步调用。
假设,我们需要初始化JQuery UI组件并且数据必须从ajax加载,UI组件可能会用out数据初始化,以确保这样的async:false只是保证的方式,否则对于一般用途你应该使用异步:真实的;