AjaxでのsetCookieの呼び出しは失敗しますが、IDEにエラーはありません

私は最近プロジェクトに取り組んでいますが、この小さなミスのために長い間遅れていました。ここに記録します。

フロントエンドコード:

次の形式のコードを簡略化します

<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>

 完璧に動作します!

おすすめ

転載: blog.csdn.net/qq_30336973/article/details/124414252