2016-10-22 2 views
0

학위를 위해 프로젝트를하고 있습니다. 이 프로젝트는 남아공의 케이프 타운에있는 학교에서 시행 될 예정인 그룹 프로젝트입니다. GitHub에서 전체 자식 조직을 확인할 수 있습니다 (Jewel Systems).jQuery insert before 또는 before 메서드가 작동하지 않습니다.

이 프로젝트는 기본적으로 교사가 수업 예약을위한 기기 예약이나 학생에게 기기 대여를 원할 때처럼 기기 대여를 추적하는 시스템입니다. 선생님이 대여 할 장치를 너무 많이 선택하면 오류 메시지가 표시되어 사용자에게 알려줍니다.

프로젝트의 프런트 엔드에서 작업 중이므로 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이 설치되어 있어야합니다).

+1

코드가 작동하지만 다른 곳에서 문제가 발생했을 수 있습니다. [jsfiddle example here] (https://jsfiddle.net/42ukk4mv/)를 참조하십시오. $가없는 msg도 작동합니다. – ainasiart

+0

그리고 좋은 방법은 sessionStorage는'sessionStorage.setItem ('key', 'value')'입니다. – ainasiart

+0

@ainasiart 왜 더 낫습니까? 예, 다른 파일에서 오류를 발견했습니다. 아약스를 중지 한 후에 오류 메시지가 제거되었습니다. –

답변

2

당신의 MSG는

msg.insertBefore ('. 패널')를 사용할 필요가 어쩌면 이미 jQuery를 객체 입니다 그쪽으로 보인다;

+0

그건 효과가없는 것 같습니다. –

0

오류가 다른 파일에 있는데, 여기에서 ajaxStop이 발생했을 때 오류 메시지가 제거되었습니다.

관련 문제