使用ES6 Promises的jQuery ajax

11 浏览
0 Comments

使用ES6 Promises的jQuery ajax

我正在尝试使用ES6 Promise通过jQuery进行POST请求:

我有一个函数:

getPostPromise(something, anotherthing) {
  return new Promise(function(resolve, reject) {
    $.ajax({
      url: someURL,
      type: 'post',
      contentType: 'application/json; charset=utf-8',
      data: JSON.stringify(
        something: something,
        anotherthing: anotherthing
      }),
      dataType: 'json',
      success: resolve,
      error: reject
    });
  });
}

我这样调用它:

getPostPromise(
  'someFooStuff',
  'someBarStuff'
).then(
  function(returnedData) {
    console.log("Good: ", returnedData);
  },
  function(responseObject) {
    console.log("Bad: ", responseObject);
  }
).catch(
  function(errorThrown) {
    console.log("Exception: ", errorThrown);
  }
);

我的服务器按预期返回了一个JSON格式的请求体,但我的控制台输出是:

Good: undefined

为什么我没有得到返回的数据?

感谢任何人/每个人的帮助。

--- 更新编辑 ---

我将我的js代码精简为:

import $ from 'jquery';
$.get('http://localhost:8008/api/user')
  .done(function(data) {
    console.log(data);
  });

我仍然得到undefined作为输出。如果我在网络选项卡中打开请求,我可以看到具有正确数据的响应对象。请求已发出,服务器正常响应,结果显示在浏览器中,但done的data参数为undefined。我被困住了。

--- 更新2 - 找到解决办法 ---

我发现问题出在使用:https://github.com/jpillora/xdomain 来绕过CORS。看起来这个库在某种程度上搞乱了返回值。我已经将其移除,并将正确实现CORS,与那些不支持它的浏览器无关。

0