构造HTTP请求有多种方式,此种为使用javascript 构造http请求的方法
构造HTTP请求_vscode post 请求-CSDN博客
web/static/js/user/login.js
;
var user_login_ops = {init:function(){this.eventBind();},eventBind:function(){$(".login_wrap .do-login").click( function(){var btn_target = $(this);if( btn_target.hasClass("disabled") ){common_ops.alert("正在处理!!请不要重复提交~~");return;}var login_name = $(".login_wrap input[name=login_name]").val();var login_pwd = $(".login_wrap input[name=login_pwd]").val();if( login_name == undefined || login_name.length < 1){common_ops.alert( "请输入正确的登录用户名~~" );return;}if( login_pwd == undefined || login_pwd.length < 1){common_ops.alert( "请输入正确的密码~~" );return;}btn_target.addClass("disabled");$.ajax({url:common_ops.buildUrl("/user/login"),type:'POST',data:{ 'login_name':login_name,'login_pwd':login_pwd },dataType:'json',success:function(res){btn_target.removeClass("disabled");var callback = null;if( res.code == 200 ){callback = function(){window.location.href = common_ops.buildUrl("/index");}}common_ops.alert( res.msg,callback );}});} );}
};$(document).ready( function(){user_login_ops.init();
} );
1 为什么在上段代码中if判断条件后面都有个reutrn;
在JavaScript(以及许多其他编程语言)中,return
语句用于从函数中返回一个值,并且立即终止函数的执行。在上段代码中,return
语句被用在if
判断条件的后面,目的是为了在满足特定条件时提前退出当前的函数或事件处理器。
具体到你提供的登录功能的代码片段中,return
语句被用来处理以下情况:
-
防止重复提交:
if( btn_target.hasClass("disabled") ){ common_ops.alert("正在处理!!请不要重复提交~~"); return; // 如果按钮已被禁用,显示提示信息并退出函数
}
这里,如果登录按钮(btn_target
)已经有disabled
类(意味着它可能已经被点击过,并且正在处理登录请求),则显示一个提示信息给用户,并通过return
语句退出当前的点击事件处理器,从而防止重复提交。
2. 验证输入:
if( login_name == undefined || login_name.length < 1){ common_ops.alert( "请输入正确的登录用户名~~" ); return; // 如果用户名无效,显示提示信息并退出函数
}
if( login_pwd == undefined || login_pwd.length < 1){ common_ops.alert( "请输入正确的密码~~" ); return; // 如果密码无效,显示提示信息并退出函数
}
- 在这两个
if
语句中,代码检查用户名(login_name
)和密码(login_pwd
)是否有效。如果任何一个无效(即未定义或长度小于1),则显示一个相应的提示信息,并通过return
语句退出函数,从而阻止后续的登录请求。
使用return
语句在这些情况下是一种很好的实践,因为它可以防止代码在不满足前提条件的情况下继续执行,从而避免潜在的错误或不必要的操作。这也使得代码更加清晰和易于理解,因为读者可以立即看到在满足特定条件时函数将如何退出。
2、 代码中为什么都是input[name= ] 而不是input[password = ]
在上段代码中,使用了jQuery选择器来获取登录表单中的用户名和密码。选择器的写法是根据HTML元素的属性来确定的。
var login_name = $(".login_wrap input[name=login_name]").val();
var login_pwd = $(".login_wrap input[name=login_pwd]").val();
这里,input[name=login_name]
和 input[name=login_pwd]
分别选择了name
属性为login_name
和login_pwd
的input
元素。这种写法是基于HTML表单元素的常见实践,其中name
属性用于在表单提交时标识每个输入字段。
为什么不用 input[password=]
呢?
-
HTML标准:
password
并不是input
元素的一个可用于选择器的属性值,而是一个type
属性的值。正确的选择器应该基于type
属性,如果我们要选择密码输入框,应该使用input[type=password]
。 -
实践:在表单中,我们通常通过
name
属性来标识和引用输入字段,因为name
属性在表单提交时会被发送到服务器,并且它允许我们在JavaScript中更具体地引用到某个字段,尤其是在有多个相同type
的输入字段时。 -
安全性:使用
type=password
确实可以选择到密码输入框,但在JavaScript中直接引用密码字段(尤其是在选择器或变量命名中)可能会暴露代码的目的,从而潜在地降低安全性(尽管这不是一个主要的安全漏洞,但最好避免在代码中直接提及敏感信息)。
因此,正确的做法是使用input[type=password]
来选择密码输入框,但在这个特定的例子中,作者可能已经有了另一个方式来标识密码输入框(比如通过name
属性),或者他们只是遵循了使用name
属性来选择表单字段的惯例。如果密码输入框的name
属性是login_pwd
(或类似的),那么使用input[name=login_pwd]
是完全正确的。