2011-06-10 86 views
0

我有一個下拉在JSP頁面中具有以下代碼填充基於

<s:select name="newQuestion.CertificationId" 
    list="certificationList" 
    listKey="certificationId" 
    listValue="certificationName" 
    headerKey="" 
    headerValue="Select Certification" 
    label="Certification Name" 
    onchange="getQuestionsList(this.value)" /> 

現在在下降的變化情況下被調用JS在Struts2應用程序從下拉選擇向下值的表函數getQuestionsList()打算獲取認證標識的問題列表選擇。

在JS的功能,我將它提交給一個動作類,我正在做一個數據庫調用基於認證標識的值獲取的問題列表

function getQuestionDetails(value){ 
    var submiturl = "Action1.action?certId="+value; 

$.ajax({ 
    url:submiturl, 
    type: 'get', 
    beforeSend: function(){ 
     $("#loading").show(); 
     alert("parsed"); 
    }, 
    success: function(result){ 
     if(result!=''){ 

     } else { 
      alert(result); 
     } 
    }, 
    }); 
} 

現在,在動作類我設置的值questionList與我從數據庫中獲取價值的.questionList是struts.xml中與getter和setter methods.Now動作類中的實例變量我傳遞給同一個JSP在那裏我有下拉

<action name="questionAction" class="questionInfo.QuestionManager" 
      method="displaySelectedQuestions"> 
    <result name="loaded">/questionAdmin.jsp</result> 
</action> 

問題我遇到的是當我回到jsp的時候我不能夠檢索的問題列表,我在一個迭代器顯示

<table class="registrationDetailsTable"> 
    <tr class="tabledataheader"> 
     <td>Question Id</td> 
     <td>Question Description</td> 
    </tr> 
    <s:iterator value="questionList"> 
     <tr class="tabledatarow"> 
      <td><s:property value="questionId" /></td> 
      <td><s:property value="questionDesc" /></td>   
     </tr> 
    </s:iterator> 
</table> 

請讓我知道我收到錯了,所以我有填充在我的JSP的問題列表

回答

1

當你打電話給你的行動與$.ajax(...),動作通過轉發到視圖(questionAdmin.jsp)創建響應,對吧?這個響應應該在你的Ajax調用的返回值處理程序中可用。

所以,當你有這樣的:

success: function(result){ 
     if(result!=''){ 
      // nothing here currently! 
     } else { 
      alert(result); 
     } 
    } 

你應該做的與得到的HTML的東西。你可以從alert(result)開始,看看你得到了什麼,然後用Javascript顯示新的列表內容。

<div id="myTableWrapper"> <!-- I added this div --> 
    <!-- This part should come from the action when called by Ajax --> 
    <table class="registrationDetailsTable"> 
     <tr class="tabledataheader"> 
      <td>Question Id</td> 
      <td>Question Description</td> 
     </tr> 
     <tr class="tabledatarow"> 
      <td>1</td> 
      <td>My question #1</td>   
     </tr> 
     <tr class="tabledatarow"> 
      <td>2</td> 
      <td>My question #2</td>   
     </tr> 
    </table> 
    <!-- //This part should come from the action when called by Ajax --> 
</div> 

所以現在你可以這樣做::

success: function(result){ 
     if(result!=''){ 
      $('.myTableWrapper').html(result); 
     } else { 
      alert(result); 
     } 
    } 
+0

當我打印出結果在上面所做的Ajax調用,我得到讓你有一個包含這樣你的表一個div我會做questionAdmin.jsp的源代碼。 – Sam 2011-06-13 07:37:01

+0

在上面的動作類QuestionManager中,我使用在URL中傳遞的問題標識從數據庫中提取問題列表,並使用questionList的setter方法設置了相同的值,該方法是該動作類可變的實例 – Sam 2011-06-13 07:39:06

+0

@Sam不是questionAdmin.jsp產生正確的輸出?你能用那個輸出來更新你的表格的HTML嗎?我不知道如何進一步幫助,因爲我不明白你的問題到底是什麼。你應該能夠1)用初始值加載你的列表2)選擇一個ID,將它作爲一個Ajax調用發送給你的動作,3)使用Javascript在你的頁面上顯示該調用的結果(=更改的列表)。 – deltaforce2 2011-06-13 08:57:05