Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Redux如何在ajax完成后打开新窗口_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript Redux如何在ajax完成后打开新窗口

Javascript Redux如何在ajax完成后打开新窗口,javascript,reactjs,redux,Javascript,Reactjs,Redux,我的问题是: 我在表单上有一个保存按钮。单击save按钮时,它应该通过ajax发送表单数据。当ajax调用成功时,应该打开一个新窗口 我遇到的问题是(我正在使用React+Redux): //组件类内部 handleSubmit=(e)=>{ this.props.dispatch(//调用ajax) } //在ajax操作中 分派=>{ 获取(…)。然后(响应=>{ 如果(分辨率状态>=200和分辨率状态

我的问题是:

我在表单上有一个保存按钮。单击save按钮时,它应该通过ajax发送表单数据。当ajax调用成功时,应该打开一个新窗口

我遇到的问题是(我正在使用React+Redux):

//组件类内部
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 }); 
  };
}