私は最近プロジェクトに取り組んでいますが、この小さなミスのために長い間遅れていました。ここに記録します。
フロントエンドコード:
次の形式のコードを簡略化します
<form id="login-form" method="post">
<input type="text" placeholder="请输入您的用户名" class="form-control required" name="username" id="username" tips="请填写用户名" />
<input type="password" placeholder="请输入密码" class="form-control required" id="password" name="password" tips="请填写密码" />
<input type="text" name="cpacha" id="cpacha" maxlength="4" class="form-control required" placeholder="验证码" tips="请填验证码" >
</form>
ajaxを使用して、Cookieを設定するためのユーザー名が存在するかどうかを判断したい場合、jsコードは次のとおりです。
<script src="admin/js/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="admin/js/bootstrap.min.js"></script>
<script src="admin/js/util.js"></script>
<script type="application/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#submit-btn").click(function(){
if(!checkForm("login-form")){
return;
}
var user={};
user.username= $("#username").val();
user.password =$("#password").val();
user.cpacha = $("#cpacha").val();
$.ajax({
url:'/system/login',
type:'POST',
//data:{username:username,password:password,cpacha:cpacha},
data:user,
dataType:'json',
success:function(data){
if(data.code == 0){
alert("setCookie前");
setCookie("user",data.content,1);
alert("setCookie后");
window.location.href = 'index';
}else{
showErrorMsg(data.msg);
}
},
error:function(data){
alert('网络错误!');
}
});
});
});
</script>
util.jsのsetCookie()メソッドは、実行可能ファイルのCookieの値を設定できず、ログインページにジャンプできませんが、バックグラウンドを正常に一致させることができます。
結果は次のとおりです。
エラーのないIDE
しかし、ブラウザを開いてF12キーを押してコンソールに入ると、いくつかの手がかりが見つかりました。
ログインページのjsファイルはすべて人気があり、その中に行があり、それが私の警戒を呼び起こしました。
Uncaught ReferenceError: setCookie is not defined
setCookieが定義されていません。
Ctrlキーを押しながらマウスをクリックすると、 util.jsと入力できることがわかります。
function setCookie(name, value, days) {
var d = new Date;
d.setTime(d.getTime() + 24*60*60*1000*days);
window.document.cookie = name + "=" + value + ";path=/;expires=" + d.toGMTString();
//console.log(name + "=" + value + ";path=/;expires=" + d.toGMTString())
var strCookie=window.document.cookie;
alert("function setCookie里"+strCookie);
}
setCookieメソッドも定義されています。途方に暮れていたとき、JavaScriptの実行順序がページにあるかどうかを突然思い出したので、
<script>XXX</script>
前面に置く
しかし、それでも問題があります。
倒れそうになったとき、エピファニーがやって来て、よく考えてみましたが、パス参照エラーはありますか?
フォルダ階層を表示する
<script></script>のsrcに「/」を追加します
これは:
<script src="/admin/js/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="/admin/js/bootstrap.min.js"></script>
<script src="/admin/js/util.js"></script>
<script type="application/javascript"></script>
完璧に動作します!!!!