2016-10-22 51 views
0

我正在爲我的學位做一個項目。這個項目是一個集體項目,旨在在南非開普敦的一所學校實施。您可以在GitHub上檢查整個git組織,名爲Jewel SystemsjQuery insertBefore或之前的方法不工作

該項目基本上是一個跟蹤設備租金的系統,例如老師爲一個班級預訂設備,或者學生想要借用設備。如果教師選擇出租太多設備,則會顯示一條錯誤消息告訴用戶。

我很忙,在項目的前端,我不能讓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示例這裏](https://jsfiddle.net/42ukk4mv/),和味精沒有$也工作 – ainasiart

+0

並設置好的好方法sessionStorage是'sessionStorage.setItem('key','value')'。 – ainasiart

+0

@ainasiart爲什麼更好?是的,我發現在另一個文件中的錯誤。我在ajax停止後刪除了錯誤消息。 –

回答

2

似乎塔您味精已經是一個jQuery對象 也許你不得不使用

msg.insertBefore( '面板。');

+0

這似乎沒有工作。 –

0

錯誤發生在另一個文件中,當我發現ajaxStop發生時,我刪除了錯誤信息。