使用ES6 Promises的jQuery ajax
使用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,与那些不支持它的浏览器无关。