这是我的问题:
我在表单上有一个保存按钮。单击保存按钮时,它应通过ajax发送表单数据。当ajax调用成功时,应该打开一个新窗口。
我遇到的问题是这个(我正在使用React + Redux):
//inside the component class
handleSubmit = (e) => {
this.props.dispatch( // calls ajax )
}
//inside the ajax action
dispatch => {
fetch(...).then(response => {
if (res.status >= 200 && res.status < 300) {
window.open(...)
}
})
}
将window.open()
置于ajax调用中的问题是新窗口将被视为被chrome和FF阻止的弹出窗口。
我认为我应该将window.open()
放在handleSubmit
内以防止浏览器阻止它。但是,如何在dispatch
内确定handleSubmit
是否已成功完成?或者是否有其他地方我可以致电window.open()
而不被阻止?
答案 0 :(得分:3)
一旦承诺到达foo
,AJAX请求已完成,因为承诺现已解决,发出另一个触发window.open的操作。
private void button_Click(object sender, RoutedEventArgs e)
{
var currentWindow = new Window();
currentWindow.Show();
}