Javascript Redux如何在ajax完成后打开新窗口
我的问题是: 我在表单上有一个保存按钮。单击save按钮时,它应该通过ajax发送表单数据。当ajax调用成功时,应该打开一个新窗口 我遇到的问题是(我正在使用React+Redux):Javascript Redux如何在ajax完成后打开新窗口,javascript,reactjs,redux,Javascript,Reactjs,Redux,我的问题是: 我在表单上有一个保存按钮。单击save按钮时,它应该通过ajax发送表单数据。当ajax调用成功时,应该打开一个新窗口 我遇到的问题是(我正在使用React+Redux): //组件类内部 handleSubmit=(e)=>{ this.props.dispatch(//调用ajax) } //在ajax操作中 分派=>{ 获取(…)。然后(响应=>{ 如果(分辨率状态>=200和分辨率状态
//组件类内部
handleSubmit=(e)=>{
this.props.dispatch(//调用ajax)
}
//在ajax操作中
分派=>{
获取(…)。然后(响应=>{
如果(分辨率状态>=200和分辨率状态<300){
窗口。打开(…)
}
})
}
将window.open()
放入ajax调用中的问题是,新窗口将被视为弹出窗口,被chrome和FF阻止
我想我应该把
window.open()
放在handleSubmit
里面,以防止浏览器阻塞它。但是,我如何确定分派
是否已在handleSubmit
内成功完成?或者有没有其他地方我可以调用window.open()
而不被阻止?在承诺到达时立即发送另一个操作来触发。然后()
AJAX请求完成,因为承诺现在已解决
function openWindow(someData) {
const url = someData.url;
window.open(url);
return { type: 'SOME_ACTION_TO_TAKE' };
}
export function someAction() {
let endpoint = 'http://localhost:8000/myEndpoint/';
return dispatch => {
return Axios.post(endpoint)
.then(response => response.data)
.then(json => dispatch(openWindow(json)))
.catch((err) => { //Do whatever to error here });
};
}