使用.then进行函数包装的ajax调用

时间:2018-05-17 10:13:29

标签: javascript jquery

我有以下代码

function fetchInfo(tableName, tableFields) {
  $.ajax({
    url: `${baseUrl}/_api/getTableData('${tableName}')/details?$tableFieldsQueried=${tableFields.join(',')}`,
    headers: {
      Accept: "application/json;odata=verbose"
    },
    success: function success(res) {
      return res
    },
    eror: function eror(err) {
      console.log(JSON.stringify(err));
    }
  })
}

fetchInfo("test1", ["tfield", "sfield"])
fetchInfo("test2", ["qfield", "rfield"])
fetchInfo("test3", ["ttfield", "dfield"])

如果我使用

fetchInfo("test4", ["efield","hfield"]).then((res) => console.log(res))

我没有得到因为应该对ajax调用进行链接,所以我如何使用相同的函数来使用ajax调用来获取数据。

有没有办法或者我需要为每次通话重复4次相同的ajax代码

2 个答案:

答案 0 :(得分:1)

你必须从你的功能中实际返回the ajax request object

function fetchInfo(tableName, tableFields) {
  return $.ajax({    // <-- Here
    url: `${baseUrl}/_api/getTableData('${tableName}')/details?$tableFieldsQueried=${tableFields.join(',')}`,
    headers: {
      Accept: "application/json;odata=verbose"
    },
    success: function success(res) {
      return res
    },
    eror: function eror(err) {
      console.log(JSON.stringify(err));
    }
  });
}

答案 1 :(得分:0)

感谢Rory McCrossan,我忘记了,你需要回复ajax电话

function fetchInfo(tableName, tableFields) {
  return $.ajax({
    url: `${baseUrl}/_api/getTableData('${tableName}')/details?$tableFieldsQueried=${tableFields.join(',')}`,
    headers: {
      Accept: "application/json;odata=verbose"
    },
    success: function success(res) {
      return res
    },
    eror: function eror(err) {
      console.log(JSON.stringify(err));
    }
  })
}

fetchInfo("test4", ["tfield", "sfield"]).then((res) => console.log(res))