Javascript 将返回数据放入resolve函数
我使用ajax编写了这段代码Javascript 将返回数据放入resolve函数,javascript,jquery,laravel,Javascript,Jquery,Laravel,我使用ajax编写了这段代码 $.ajax({ url: '/shipments/courrier/get', type: 'GET', beforeSend: function (request) { return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content')); },
$.ajax({
url: '/shipments/courrier/get',
type: 'GET',
beforeSend: function (request) {
return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content'));
},
success: function(response){
let inputOptionsPromise = new Promise(function (resolve) {
console.log(response);
setTimeout(function () {
resolve({
'#FF0000': 'Red',
'#00FF00': 'Green',
'#0000FF': 'Blue'
})
}, 2000)
})
}
});
响应已返回数据
[{id: 1, name: "DHL", link: "https://webtrack.dhlglobalmail.com/?trackingnumber=",…},…]
0 : {id: 1, name: "DHL", link: "https://webtrack.dhlglobalmail.com/?trackingnumber=",…}
1 : {id: 2, name: "LBC", link: "https://www.lbcexpress.com/track/?tracking_no=",…}
但是问题是,我不知道如何把它放在resolve()上
替换此值
'#FF0000': 'Red',
'#00FF00': 'Green',
'#0000FF': 'Blue'
任何人都可以为我提供更好的解决方案吗?根据您在评论中发布的链接(,仅供参考),您似乎想用AJAX调用的结果填充SweetAlert。由于SweetAlert支持提供一个Promise对象作为“options”参数,并且由于jQuery$.ajax()返回一个实现Promise接口的对象,因此您可以轻松地将这两件事结合起来:
var optionsDataPromise = $.ajax({
url: '/shipments/courrier/get',
type: 'GET',
beforeSend: function (request) {
return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content'));
}
});
swal({
input: 'select',
inputOptions: optionsDataPromise
})
在本例中,我们将$.ajax返回的承诺分配给optionsDataPromise
变量,然后将该变量作为inputOptions
参数分配给swal()
。当承诺得到解决时(正如您可能猜到的,当AJAX调用成功返回时会发生这种情况),警报将根据AJAX调用返回的数据填充选项
另外,该链接中的示例只是一个静态承诺,旨在模仿有用承诺(如AJAX请求)的行为。由于它总是返回相同的数据,这些数据可能直接放在一个对象中,因此它本质上没有实现任何有用的功能,它不是一个直接复制的构造。这看起来更像Javascript而不是Java。请更正标记或说明Java是如何卷入问题的。很抱歉,我选择的标记太快了。您首先为什么需要
Promise
?您必须在ajax请求之上创建Promise。@Jerodev这是一种反模式,因为$.ajax已经返回了一个Promise
var optionsDataPromise = $.ajax({
url: '/shipments/courrier/get',
type: 'GET',
beforeSend: function (request) {
return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content'));
}
});
swal({
input: 'select',
inputOptions: optionsDataPromise
})