【发布时间】:2017-02-24 21:53:40
【问题描述】:
我正在使用 C# 和 jQuery 构建表单页面,并且我有多个输入,如果它们已填写,我想向附加的 SQL Server 提交 AJAX 调用,如果未填写我想没做什么。 一旦所有填充的都完成了 AJAX 调用,那么我想重新加载页面。
现在我有这样的功能:
Func1()
{
if ($'#form1').val().length > 0 {
$.post('https://foo/', {id: id, column: col1, value: $('form1').val())
}
if ($'#form2').val().length > 0 {
$.post('https://foo/', {id: id, column: col1, value: $('form2').val())
}
}
$('#submit').click(function() {
Func1();
window.location.reload(true);
} );
然而,这会导致一些值被更新,但不是全部,我知道这与我的异步调用有关。我对异步调用相当陌生,但通常我会放一个 .then(function(){});最后,它们工作正常,但在这种情况下它不能解决任何问题。有人可以指出我正确的资源方向来解决这个问题吗?我不能嵌套我的 AJAX 调用,因为有时 2 会更新而 1 不会。
【问题讨论】:
-
为什么要使用“C#”和“razor”标签?我猜你在你的项目中使用它们,但它们似乎与这个问题没有任何关系。无论如何,如果您想在所有 Ajax 调用完成后重新加载页面,您可以使用
Promise.all()等待它们。 -
@nnnnnn 是的,我将它们都用于我的项目。抱歉,如果它们不相关,我不确定。你能给我更多关于如何使用 Promise.all() 的背景信息吗?
-
是的,因为 ajax 是异步的,并且您在 ajax 调用完成之前调用了
location.reload()。但是 ajax 的全部目的是保持在同一页面上并在 ajax 调用完全没有意义(并且会降低性能)之后使用location.reload() -
添加了一些信息
标签: javascript c# jquery ajax razor