我可以使用一个ajax调用而不是两个吗? mvc4

时间:2014-04-30 07:31:30

标签: jquery ajax asp.net-mvc-4

我希望尽量减少我的代码。

我尝试根据下拉列表更改加载数据表。所以我在初始页面加载时使用两次ajax调用来完成我的工作,然后在下拉列表更改时使用。

事情可以变得更简单

我的代码:

var reason = $("#DropDown_Select").val()

"fnServerData": function (sSource, aoData, fnCallback) {
                debugger;
                $('#DropDown_Select').change(function () {
                    alert($(this).val());
                    reason = $(this).val()
                    $.ajax({
                        "type": "GET",
                        "dataType": 'json',
                        "contentType": "application/json; charset=utf-8",
                        "url": sSource+"/"+reason,
                        "data": aoData,
                        "success": function (data) {
                            debugger;
                            fnCallback(data);
                        }
                    });


                });
                $.ajax({
                    "type": "GET",
                    "dataType": 'json',
                    "contentType": "application/json; charset=utf-8",
                    "url": sSource +"/"+reason,
                    "data": aoData,
                    "success": function (data) {
                        debugger;
                        fnCallback(data);
                    }
                });
            }

在上述情况下,代码最小化是否可行?

此致

1 个答案:

答案 0 :(得分:2)

由于您的AJAX调用是相同的,您可以将该部分代码放在一个函数中,并将所需的值作为参数:

function handleChange(sSource, aoData, fnCallback, reason) {
  $.ajax({
    "type": "GET",
    "dataType": 'json',
    "contentType": "application/json; charset=utf-8",
    "url": sSource+"/"+reason,
    "data": aoData,
    "success": function (data) {
      fnCallback(data);
    }
  });
}

然后使用函数:

"fnServerData": function (sSource, aoData, fnCallback) {

  $('#DropDown_Select').change(function () {
    handleChange(sSource, aoData, fnCallback, $(this).val());
  });

  handleChange(sSource, aoData, fnCallback, $("#DropDown_Select").val());

}