声明一个Ajax函数并用不同的变量填充它

时间:2014-02-24 08:34:57

标签: javascript php jquery ajax

我正在尝试通过使用单独的“.js”文件并尝试仅使用一次声明多个已使用的函数来提高页面效率。所以我必须以某种方式声明它们,它们可以用于不同的情况。例如传递不同的数据。

这是我在“functions.js”文件中的Ajax函数:

function CallAjax(type, url, data, div){

$.ajax({
        type: type,
        url: url,
        data: data,
        success: function (data) {
            console.log(data);
            $(div).html(data);
        }
    });
}

这是我的PHP文件中的代码,我使用此函数并传递参数:

CallAjax('POST', 'about.php', '{ aufid : id }', '#con2');

我的问题是“数据”部分。我怎么声明呢?我这样做的方式不起作用。

当我需要不同的数据时,我不想每次都使用新的Ajax函数......我试图尽可能少地触发函数。

如果您有任何提示可以通过尝试使用更少的代码来提高页面效率,那么如果您提及它们也会很棒!谢谢!

2 个答案:

答案 0 :(得分:3)

你可以这样做:

var obj = {
aufid: 1
};

CallAjax('POST', 'about.php', obj, '#con2');

答案 1 :(得分:1)

我建议使用js回调:

function CallAjax(type, url, data, div){
  $.ajax({
    type: type,
    url: url,
    data: data,
    success: function (data) {
        callback(data);
    }
  });
}

var obj = {
    id:1
};

CallAjax('POST', 'about.php', obj, function(response){
    $(div).html(response);  //or other
});

promise中更优雅的方式:

function CallAjax(type, url, data){
  return $.ajax({
    type: type,
    url: url,
    data: data,
  });
}

var obj = { id: 1 };
var jxhr = CallAjax('POST', 'about.php', obj);

jxhr.done(function(response){
    //successful callback goes here...
}).fail(function(response){
    //failure callback goes here...
}).always(function(response){
    //always callback goes here...
});

:)