【问题标题】:Get the response code or return value of server if I used the html form (not ajax)如果我使用 html 表单(不是 ajax),则获取服务器的响应代码或返回值
【发布时间】:2015-02-09 08:06:31
【问题描述】:

我正在为我的网络应用程序使用以下网络技术: HTML JS、CSS 和 appweb 服务器。

我正在创建一个登录页面。我当然有一个表格,用户名和密码的值是使用 jquery post 发送的。如果用户的用户名和密码正确,服务器端代码会将用户重定向到登录页面,比如“/MyPage.html”。如果输入无效,服务器将发送一个 json 格式的数据,如下所示:

{"error":"用户名或密码无效"}

这不起作用,因为根据我正在使用的服务器的支持,“浏览器不会基于 301/302 重定向到 ajax 请求。”

所以我别无选择,只能使用 html 提交表单。 这是我删除所有 css 的登录表单。

<form action="/usr/login" method="post">
username: <input type="text" name="username" "><br>
Password: <input type="password" name="password" ><br>
<button>Sign in</button>
</form>

这是jquery代码,想看的朋友可以看看。

$.ajax({ 
   url:"/user/login", 
   type:"POST", 
   data: { 
      username : document.getElementById("username").value,     
      password : document.getElementById("password").value  
   }, 
   error:function(xhr, status){     
      if (xhr.status == "401") { 
         document.getElementById("invalid").innerHTML='<div class="alert alert-danger" role="alert">Invalid ID or password.</div>';     
         document.getElementById("password").value = "";    
      }else if (xhr.status == "404") {      
         document.getElementById("invalid").innerHTML='<div class="alert alert-danger" role="alert">Page not found.</div>';     
         document.getElementById("password").value = "";    
      }else{        
         document.getElementById("invalid").innerHTML="";   
      }  
  } 
});

1) 如果不使用 ajax,我如何知道(客户端)输入是否无效? 2)考虑到限制,是否可以获得服务器的响应代码?怎么样?

【问题讨论】:

  • 您可以编写代码来使用 jQuery 帖子将数据发送到服务器,因为我认为您可以修改代码来处理错误?
  • 嗨@RaghvendraKumar 我在我的帖子中添加了jquery 代码。请检查一下,谢谢

标签: javascript html forms


【解决方案1】:

假设您知道您将从服务器获得的确切消息,您可以从您从服务器获得的 json 字符串中提取它并进行常规比较以检查它。

   error:function(xhr, status)
         {     
           var json    = xhr.responseText;
           var jsonObj = JSON.parse(json);
           var msg     = jsonObj.error;  

             if (msg == "Invalid username or password") 
             {  
                 // your code to set the innerHTML or javascript to perform redirection
             }
         } 

希望对您有所帮助!

【讨论】:

  • 这行得通。但是,当我们谈论 Web 应用程序时,客户端将成为拥有重定向代码的人是否可以、正常或最佳实践?
  • 不确定这是否是最佳实践,但我认为您在问题中提到,如果我让您正确的话,您在服务器或服务器端代码方面没有太多选择。如果由于服务器的限制,您无法执行服务器端重定向,那么您可以通过检查服务器端是否存在相同的错误(如果发现)或 javascript 重定向来考虑服务器端转发,它也不是完全不安全的,因为它是一个发布请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多