Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
在ASP.net MVC 5应用程序中单击按钮时使用javascript/jquery将用户重定向到页面_Javascript_Jquery_Asp.net Mvc_Asp.net Mvc 4_Asp.net Mvc 5 - Fatal编程技术网

在ASP.net MVC 5应用程序中单击按钮时使用javascript/jquery将用户重定向到页面

在ASP.net MVC 5应用程序中单击按钮时使用javascript/jquery将用户重定向到页面,javascript,jquery,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-5,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 5,我希望用户在提交表单后立即被重定向到其他页面。我不关心调用控制器操作httpost时会发生什么。我只希望用户在点击按钮或提交表单后立即重定向页面。下面是我尝试过的,但它不起作用 cshtml文件片段 <script> $(document).ready(function () { $('#formSubmitButton').click(function () { debugger; // Neither wor

我希望用户在提交表单后立即被重定向到其他页面。我不关心调用控制器操作httpost时会发生什么。我只希望用户在点击按钮或提交表单后立即重定向页面。下面是我尝试过的,但它不起作用

cshtml文件片段

<script>
    $(document).ready(function () {
        $('#formSubmitButton').click(function () {
            debugger;
            // Neither works
             window.location.href = "/Home/Index"; 
            window.location.href = "https://www.google.com";


        });
    });
</script>
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SavePayment(PaymentFormMV data)
{
    return View ("Hello")
}
命中的实际httpost控制器方法

<script>
    $(document).ready(function () {
        $('#formSubmitButton').click(function () {
            debugger;
            // Neither works
             window.location.href = "/Home/Index"; 
            window.location.href = "https://www.google.com";


        });
    });
</script>
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SavePayment(PaymentFormMV data)
{
    return View ("Hello")
}
我可以在javascript代码中看到断点被击中。但没有效果。此外,正常的post调用将按预期进行,并调用SavePayment方法,因此相应地查看
hello
。请引导我。为什么我不能重定向按钮上的用户点击索引页面。我知道最终会调用SavePayment,但为什么重定向不起作用呢。我错过什么了吗

编辑:
这里是整个故事。客户正在付款,有些付款超时。当超时没有发生时,“Hello”重定向是完全正常的。所以基本上如果超时发生在2分钟内。然后我会在将用户重定向到主页之前设置一个计时器,可能是1.58兆。如果post方法返回success,那么将调用“Hello.cshtml”。但万一IIS服务器将在2分钟后抛出超时异常,则我的Javascript代码将在IIS退出之前超时(计时器中设置了1.58),并将用户重定向到主页。我希望最终发生的IIS超时错误不会覆盖用户已安全重定向的主页。请引导我。底线我不想让IIS把用户踢出去。我没有在javascript代码片段中添加超时间隔代码,因为正常重定向本身不起作用。

因为,当您单击submit按钮时,表单被提交,HttpPost操作方法将处理发布的表单数据并返回ViewResult(从“Hello”视图生成的html标记)。由于表单正在提交,因此它不会在设置
window.location.href
值的地方执行js代码

在成功执行保存后,您应该在操作方法中执行重定向,如PRG模式

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SavePayment(PaymentFormMV data)
{
    //do something
    return RedirectToAction("Index","Home"); 
}

如果您绝对希望使用客户端脚本进行重定向,但希望表单提交和处理(如FieldWordWrad),您可以考虑使用Ajax表单。

$('#formSubmitButton').click(function (e) {

   e.preventDefault();  // Prevent normal form submit

   var _form=$(this).closest("form");
   $.post(_form.attr("action"),_form.serialize(),function(res){
      //If you want to check the response and then do redirection
      // you should do it here. Make sure you return a json response from server then
   });
   window.location.href = "https://www.google.com";

});
编辑:根据相关编辑

这里是整个故事。客户正在付款,还有一些付款 正在超时。“Hello”重定向在以下情况下非常好: 超时没有发生。所以基本上如果超时发生在2 分钟。然后我会在5月15日前设置一个计时器 正在将用户重定向到主页。如果post方法返回success,则 将调用“Hello.cshtml”。但以防万一,如果IIS服务器 即将抛出超时异常,该异常在2分钟后 Javascript代码将在IIS退出之前超时(计时器中设置了1.58) 并将用户重定向到主页。我希望这段时间 最终将发生的out错误不会覆盖主页 该用户已被安全重定向。请引导我。底线一 不希望IIS将用户踢出。我没有添加超时 javascript代码段中的间隔代码是正常的 重定向本身不起作用

我最初的回答是,不要在这样一个用户线程上花费2分钟做任何事情。这不是一个好的用户体验。我不知道你从哪里得到2分钟的休息时间!但是我建议你修改代码,这需要很长时间。您应该将其卸载到可能是一个ajax调用(参见上面的ajax代码示例),如果您没有得到200 OK响应(或您的
成功
回调),您可以在客户端执行一些操作(向用户显示一条消息,以便他们可以重试)。通过这种方式,您可以避免使用本地javascript计时器


底线是:修复需要2分钟以上时间的代码!可能有另一种方法来解决您的问题/用例。

因为,当您单击submit按钮时,表单被提交,HttpPost操作方法将处理发布的表单数据并返回ViewResult(从“Hello”视图生成的html标记)。由于表单正在提交,因此它不会在设置
window.location.href
值的地方执行js代码

在成功执行保存后,您应该在操作方法中执行重定向,如PRG模式

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SavePayment(PaymentFormMV data)
{
    //do something
    return RedirectToAction("Index","Home"); 
}

如果您绝对希望使用客户端脚本进行重定向,但希望表单提交和处理(如FieldWordWrad),您可以考虑使用Ajax表单。

$('#formSubmitButton').click(function (e) {

   e.preventDefault();  // Prevent normal form submit

   var _form=$(this).closest("form");
   $.post(_form.attr("action"),_form.serialize(),function(res){
      //If you want to check the response and then do redirection
      // you should do it here. Make sure you return a json response from server then
   });
   window.location.href = "https://www.google.com";

});
编辑:根据相关编辑

这里是整个故事。客户正在付款,还有一些付款 正在超时。“Hello”重定向在以下情况下非常好: 超时没有发生。所以基本上如果超时发生在2 分钟。然后我会在5月15日前设置一个计时器 正在将用户重定向到主页。如果post方法返回success,则 将调用“Hello.cshtml”。但以防万一,如果IIS服务器 即将抛出超时异常,该异常在2分钟后 Javascript代码将在IIS退出之前超时(计时器中设置了1.58) 并将用户重定向到主页。我希望这段时间 最终将发生的out错误不会覆盖主页 该用户已被安全重定向。请引导我。底线一 不希望IIS将用户踢出。我没有添加超时 javascript代码段中的间隔代码是正常的 重定向本身不起作用