AJAX:这是不好的做法吗?

时间:2016-01-30 05:44:13

标签: php jquery ajax

我已经使用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。我没有将getmonthgetyear“程序”复制到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调用程序?

2 个答案:

答案 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只是保证的方式,否则对于一般用途你应该使用异步:真实的;