2012-09-20 6 views
0
<t:panelTab label="Detailed View" styleClass="tabFont" rendered="true" id="DetailedView"> 
    <t:dataTable value="#{MyFinanceBB.amendDataList}" id="DetailedViewGrid" forceId="true" 
       var="myVo" rowIndexVar="gridExpRowNo"......> 
    ............... 
     <t:inputText value="#{myVo.myval}" styleClass="BodyFont" forceId="true" id="myId2" 
            onchange="getTotalMyValAjax('myId2[#{gridExpRowNo}]',#{gridExpRowNo});"> 

/--------------------------------- -------------------------------/使用jQuery異步加載t:JSF中的dataTable

function getMyAmountTotalGrid(myidVar,count){ 

      var myAmt=document.getElementById(myidVar).value; 

      var id = 'myForm\\:targetView'; 

       $j.ajax({ 
        async:"false", 
        cache:"false", 
        type: "POST", 
        url:"/myProj/myController", 
        data:{myAmt:myAmt,count:count}, 
        error:function(){ 
         alert('Error Occurred.Please try later'); 
         }, 
        success:function(output){ 
           alert('SUCCESS'); 
           $j('#'+id).load("/pagesmyProj/Home/dingDongHome.jsf"); 
           alert('after reloading grid');           
         } 
        }); 
     } 

當我執行代碼警報消息SUCCESS正在被打印,並且所有的服務器端變量都得到了更新(我通過sysouts來了解這一點)。但是網頁上沒有任何變化。警告消息「在重新排列網格之後」也正在打印。但電網沒有重新加載。服務器端的變化沒有反映在瀏覽器中。

+0

您是否收到任何錯誤?如果第一個警報觸發,但第二個警報不行,則中間的行可能會出錯。 – MrOBrian

回答

3

對於開始你應該添加\\到您的ID

代替var id = 'myForm:targetView';

var id = 'myForm\\:targetView';通過ID無法正常工作,否則jQuery選擇的(你需要躲避:

+0

感謝您的回答。現在,重新加載網格之後的警報即將到來。但是網頁沒有變化(服務器端的變化並沒有真正反映在瀏覽器中)。 –

+0

這個功能工作正常。(繼續上面的問題)但有一些。這個壓光標籤工作得很好。但是當我改變一些東西並調用Ajax功能時,那麼這個t:inputCalendar標記不會顯示必要的彈出窗口來編輯該字段中的日期。 –

1

你引用

$j('#'+id)... 

只是刪除了 「J」,恩。 $( '#' + id)的...

+0

$ j = jQuery.noConflict(true);我已經添加了該代碼以及 –

0

經過漫長的爭鬥,我得到了錯誤。給jquery加載函數的url不正確,應該改變。