当前位置: 首页 > 面试题库 >

ASP.NET MVC 4中的jQuery Ajax调用后的服务器端重定向

颛孙飞
2023-03-14
问题内容

我将登录信息从jQuery AJAX调用发送到MVC 4控制器:

   $.post(url, data, function (response) {
      if (response=='InvalidLogin') {
          //show invalid login
      }
      else if (response == 'Error') {
          //show error
      }
      else {
          //redirecting to main page from here for the time being.
          window.location.replace("http://localhost:1378/Dashboard/Index");
      }
   });

如果登录成功,我想根据用户类型将用户从服务器端重定向到适当的页面。如果登录失败,则会将字符串发送回用户:

    [HttpPost]
    public ActionResult Index(LoginModel loginData)
    {
        if (login fails)
        {
            return Json("InvalidLogin", JsonRequestBehavior.AllowGet);
        }
        else
        {
             // I want to redirect to another controller, view, or action depending
             // on user type.
        }
    }

但是有问题:

  1. 如果此方法返回“ ActionResult”,那么我将收到错误消息not all code paths return a value

  2. 如果我使用“ void”,则无法返回任何内容。

  3. 即使我使用“ void”且没有返回值,由于jQuery AJAX调用的异步特性,我也无法重定向到其他控制器或视图。

有什么技术可以处理这种情况?


问题答案:

return通常从方法返回而无需执行任何其他语句,因此else不需要。这样,您将摆脱问题#1。

至于重定向,为什么不返回某种 重定向 命令:

[HttpPost]
public ActionResult Index(LoginModel loginData)
{
    if (login fails)
    {
        return Json(new {result = "InvalidLogin"}, JsonRequestBehavior.AllowGet);
    }
    return Json(new {result = "Redirect", url = Url.Action("MyAction", "MyController")});
}

然后在javascript中:

$.post(url, data, function (response) {
  if (response.result == 'InvalidLogin') {
      //show invalid login
  }
  else if (response.result == 'Error') {
      //show error
  }
  else if (response.result == 'Redirect'){
      //redirecting to main page from here for the time being.
      window.location = response.url;
  }
 });


 类似资料:
  • 目录 1.搭建.net开发环境 1.1下载安装iis7.0,下载安装vs2015,配置IIS 1.2下载开发工具 1.3开发工具介绍 1.4设置开发工具 1.5开启服务和打开数据库 2.运行开发案例 2.1设置开发工具的编译路径 2.2编译UI资源 2.3拷贝UI资源到发布路径下 2.4打开IIS启动网页 2.5在开发工具里启动tomcat,运行案例 3.建立数据库和库表 3.1建立数据库 3.2

  • 问题内容: 我需要在服务器端(PHP)期间和AJAX调用中启动重新加载。我该怎么做呢。老实说,我认为它不受支持。 我当前的方法是使用PHP header()函数并将其捕获为来自AJAX调用的responseText,然后执行innerHTML添加。 但是,这在我的书中不是正确的重载,因为它不会启动onload函数。它似乎也是人为的,而不是“干净的”解决方案。 问题答案: 将命令/标志发送回您的Aj

  • 我使用jQueryAjax发布数据并相应地显示成功消息。代码如下: Javascript HTML PHP服务器端 现在一切正常,但是我无法将成功消息从服务器端发送到客户端。我如何才能在客户端页面中显示成功消息。在客户端javascript当我打印数据在警报框我看到一个空框。如何将数据变量从服务器端传递到客户端。

  • 身份验证和授权工作正常。但是在成功登录后,它不会将我重定向到客户端,而是进一步打开一些.js文件的源代码。而上一个(没有自定义登录表单loginPage(“/login”))它成功地将我重定向到最后一个单击的页面(客户端),该页面需要进行身份验证。 我的服务器端代码如下: 授权服务器 资源服务器 我的安全配置

  • 我在Spring 3中使用@Scheduled annotation。我需要每周或每两周运行一些任务,所以我使用cron表达式作为参数,例如。 我的问题是,如果我将创建必须每7天运行一次的计划任务,并且在第6天我将重新启动服务器(与战争重新部署),它会重置这个计划任务(我需要再次等待7天)还是它会保存其状态并在第7天触发此任务?

  • 关于是否使用RMQ / Kafka / Http等进行微服务之间通信的讨论,我有点不知所措。我希望对此有所了解。首先,我的客户端是一个移动应用程序,它进行同步调用并等待响应。 凭直觉,我不希望java服务器和Python分类器之间的内部通信是同步的,因为我希望有高吞吐量,因为我可以让数千或数百万(希望如此)客户机同时发送请求。 如何进行非阻塞请求-响应,并将请求检索到同一客户端? 客户