2011-06-10 85 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