2013-03-13 140 views
1

我是jQuery的新手,我已經研究了足夠的網絡,但似乎無法找到解決此問題的方法。 我有兩個選項卡,每個從不同的JSP加載。主要的JSP(默認的一個)包含了所有的腳本文件。但是當我從JSP2調用jQuery函數時,它們不會被觸發。我的理解是,JSP2不具有這些函數的可見性。 當我複製粘貼到jsp2所需的jQuery功能時,一切都按預期工作。但我不明白爲什麼我需要在兩個地方有腳本文件。每個JSP在獨立運行時按預期工作。jquery多個jsp選項卡

以下是代碼中的一些片段,主要JSP:

<div id="tabs"> 
<ul> 
<li><a href="#tabs-1">Tab one</a></li> 
<li><a href="config.jsp" title="test">Tab two</a></li> 
</ul> 

<div id="tabs-1"> 
blah blah </div> 
</div> 

JQuery的:

$(document).ready(function() { 

$('#tabs').tabs(); 
} 

function updateGrid(){ 
url = "www.google.com"; 
jQuery("#logGrid").clearGridData(); 
cache : false, 
$.post(url, 
function(data) { 
    if (data != null) { 
     var mygrid = jQuery("#logGrid")[0]; 
     for (var i = 0; i < data.length; i++) { 
      jQuery("#logGrid").addRowData(i, data[i]); 
     } 
    } 
}); 
    } 

    jQuery("#logGrid").jqGrid(
     { 
      url : '', 
      mtype : 'POST', 
      datatype : "json", 
      rownumbers : true, 
      colNames: ["Logger Name","Logger Parent ", "Current Log Level", "Update Log Level To"], 
      colModel: [ 
         { name: 'loggerName', index: "loggerName", width: 215, editable: true}, 
         { name: "loggerParent", index: "loggerParent", width: 100, editable: true }, 
         { name: "loggerEffectiveLevel", index: "loggerEffectiveLevel", width: 100, editable: true}, 
         { name: "changedLogLevel", index: "changedLogLevel", width: 35, editable: true, edittype:"select", editoptions:{value:"DEBUG:DEBUG;INFO:INFO;WARN:WARN;ERROR:ERROR;FATAL:FATAL"} } 
         ], 
      autowidth: true, 
      rownumWidth: 40, 
      height : $(window).innerHeight(), 
      viewrecords: true, 
      caption:"Log4j Configuration Log Level", 
      cellEdit: true, 
      cellsubmit: 'clientArray', 
      afterSaveCell: function (rowid, cellname, value) { 

        var targetLogLevel = jQuery('#logGrid').getCell(rowid, "changedLogLevel"); 
        var targetLogger = jQuery('#logGrid').getCell(rowid, "loggerName"); 
        updateLog(targetLogger, targetLogLevel); 

    } 

});

而且JSP2是

<script type="text/javascript"> 
    updateGrid(); 
</script> 
<div id="test"> 
<form id="logGridForm"> 
    <table id="logGrid"></table> 
</form> 
</div> 

我不想腳本功能複製到每個JSP ..它使多餘的,看起來雜亂無章。有沒有辦法解決這個問題。我在這裏做錯了什麼?

我已編輯我的問題,包括用於填充數據的jqGrid。在這種情況下,它會失敗併產生以下異常:消息:'this.p.rownumbers'爲空或不是對象URI:localhost:7001/imgRepository/js/jquery.jqGrid.min.js

當我複製該方法本地化爲JSP2。

+1

當你點擊第二個選項卡上會發生什麼?您是否使用AJAX加載第二個標籤內容?你刷新整個頁面嗎? – 2013-03-13 15:44:02

+0

第二個標籤內容通過ajax加載..服務器顯示該調用是一個製作好的數據,但是該頁面是空白的,我在firefox控制檯看到這個錯誤:未捕獲異常:jQuery UI選項卡:不匹配的片段標識符。 – user2166045 2013-03-13 15:49:42

回答

0

<script type="text/javascript"> 
    updateGrid(); 
</script> 

in your first jsp, as jsp compiles at runtime. your second jsp can call that script from first page also. 
+0

它沒有幫助。 updateGrid從jsps的任一個被調用..它使Ajax調用並獲取json數據..但是當使用jqGrid呈現Im時,我得到以下異常: 消息:'this.p.rownumbers'爲null或不是對象 URI:http:// localhost:7001/imgRepository/js/jquery.jqGrid.min.js – user2166045 2013-03-13 19:37:56