jQuery insertBefore或之前的方法不起作用

时间:2016-10-22 13:12:14

标签: jquery

我正在为我的学位做一个项目。该项目是一个小组项目,旨在南非开普敦的一所学校实施。您可以在GitHub上检查名为Jewel Systems的整个git组织。

该项目基本上是一个跟踪设备租赁的系统,例如教师为班级预订设备,或者学生想要租借设备。如果教师选择了太多要租用的设备,则会显示一条错误消息告诉用户。

我忙于项目的前端,我无法使用2种jQuery方法。它以前工作过,没有触摸过一个月的项目,错误信息刚刚停止显示。我在Firebug上检查了控制台,它显示了来自服务器的错误消息。

让我们说我在登录界面,登录界面如下: Login Screen http://i64.tinypic.com/24det55.png

login.js脚本的代码是:

$(document).ready(function() {

  if (typeof sessionStorage.email != "undefined") {
    window.location = "/user";
  } else {
    // $('.content .loading').fadeIn(1000);
    // $('.content .loading').css('display', 'block');
    // $('.content .loading').delay(2000).fadeOut(1000);
    // $('.content p.greeting').delay(5000).fadeIn(1000);
    // $('.content p.greeting').delay(2000).fadeOut(1000);
    // $('.content .panel').delay(10000).fadeIn(1000);
    // $('.content .panel').fadeIn(1000);
  }

  $('.content .panel').fadeIn(1000);

  $('form.loginForm').submit(function(event) {
    var data = $(this).serializeArray();

    $.ajax({
      url: domain + 'testauth',
      type: 'POST',
      data: JSON.stringify({"username": data[0].value, "password" : data[1].value}),
      contentType: 'application/json',
      success: function(result, status, xhr) {
        var user_data = result.data;

        if (typeof(Storage) !== "undefined") {
          sessionStorage.user_id = user_data.id;
          sessionStorage.email = user_data.email;
          sessionStorage.fname = user_data.fname;
          sessionStorage.lname = user_data.lname;
          sessionStorage.user_type = user_data.type;
          sessionStorage.created_at = user_data.created_at;
          $.get(domain + "user/" + user_data.id, function(data) {
            data = data.data;
            if (data.loaned[0] !== undefined) {
              if (data.loaned.length > 1) {
                sessionStorage.device_loaned = data.loaned[0].type + ":" + data.loaned[0].id + "#" + data.loaned[1].type + ":" + data.loaned[1].id;
              } else if (data.loaned.length === 1) {
                sessionStorage.device_loaned = data.loaned[0].type + ":" + data.loaned[0].id;
              }
            } else {
              sessionStorage.device_loaned = null;
            }
            if (data.privileges.length > 1) {
              sessionStorage.perm = data.privileges[0].type + "#" + data.privileges[1].type;
            } else if (data.loaned.length === 1) {
              sessionStorage.perm = data.privileges[0].type;
            }
            window.location = "/user";
          });
        } else {
          $('.error-message').remove();
          var msg = $('<div class="alert alert-danger error-message"></div>').html("<strong>Oh snap!</strong> Your browser doesn't support local storage, please update your browser or download <a href='https://www.google.com/chrome/'>Google Chrome</a>/<a href='https://www.mozilla.org/en-US/firefox/new/'>Mozilla Firefox</a>.");
          $(msg).insertBefore('.panel');
          event.preventDefault();
        }
      },
      error: function(xhr, status, error) {
        try {
          var response = JSON.parse(xhr.responseText);
          $('.error-message').remove();
          var msg = $('<div class="alert alert-danger error-message"></div>').html("<strong>Oh snap!</strong> The email/ID or password entered is incorrect, please try again.");
          // $(msg).insertBefore('.panel');
          $('.panel').before(msg);
        } catch (e) {
          console.log(e);
        }
      },
    });
    event.preventDefault();
  });
});

我认为不仅仅是错误消息不起作用。我一开始认为问题可能是我的笔记本电脑,因为它确实遇到了一些问题,然后我在另一台机器上测试了系统,但它做了同样的事情,所以我想我的代码可能出错了。

我的网站托管在链接服务器上(可以在Jewel Systems组织上找到回购,您需要安装gradle才能运行此服务器。)

2 个答案:

答案 0 :(得分:2)

看来你的msg已经是一个jQuery对象了 也许你必须使用

  

msg.insertBefore(&#39; .panel&#39);

答案 1 :(得分:0)

错误发生在另一个文件中,我在ajaxStop发生时删除了错误消息。