2013-10-16 49 views
3

我需要使用jQuery Ajax将表单数据从jsp传递给struts2,并从Struts2动作类接收JSON数据。 我已经给出了下面的代码。当我经过AJAX数据,使用jquery Ajax发送数据从jsp到struts2动作类

url:'search.action?searchText='+ $('searchValue').value+'&environment='+$('environmentSelect').value 

“未定义”获得通过,而不是orijinal值从JSP的动作类。

我的JSP

<div id="tab0"> 
       <s:form action="search" method="post"> 

        <table style="margin-left: auto; margin-right: auto"> 
         <tr> 
          <td>Environment:</td> 
          <td><select id="environmentSelect" name="environment"> 
            <option value="1">1</option> 
            <option value="2">2</option> 
            <option value="3">3</option> 
          </select></td> 
         </tr> 
         <tr> 
          <td>Search Value:</td> 
          <td><input id="searchValue" name="searchText" type="text" /></td> 
         </tr> 
         <tr> 
          <td></td> 
          <td><button id="searchButton">Search</button></td> 
         </tr> 
        </table> 
       </s:form> 
      </div> 

我Ajax的功能是:

$("#searchButton").on("click",function(){ 

      console.log("Inside Ajax call = "+ $('#tab0')); 

      $.ajax({ 
       type: 'POST', 
       url:'search.action?searchText='+ $('searchValue').value+'&environment='+$('environmentSelect').value, 
       dataType: 'json', 
       success: function(data){ 
        console.log(stringify(data)); 
         s=data.... 
         } 

        document.getElementById('displayLog').innerHTML=s; 
      }); 

      return false; 
     }); 

的struts.xml:

<struts> 
     <constant name="struts.enable.DynamicMethodInvocation" 
      value="false" /> 
     <constant name="struts.devMode" value="true" /> 
     <constant name="struts.custom.i18n.resources" 
      value="ApplicationResources" /> 
     <constant name="struts.convention.default.parent.package" value="default"/> 
     <constant name="struts.ui.theme" value="simple" /> 

     <package name="default" extends="struts-default" namespace="/"> 
      <action name="search" class="com.SearchAction" method="execute"> 
       <result name="success">/jsp/dummy.jsp</result> 
       <result name="error">/jsp/search.jsp</result> 
      </action> 
     </package> 

    </struts> 

Action类:

public class SearchAction extends ActionSupport { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 


    private String environment; 
    private String searchText; 


    public String getEnvironment() { 
     return environment; 
    } 

    public void setEnvironment(String environment) { 
     System.out.println("environment in setter new = "+ environment); 
     this.environment = environment; 
    } 

    public String getSearchText() { 
     return searchText; 
    } 

    public void setSearchText(String searchText) { 
     System.out.println("searchText in setter = "+ searchText); 
     this.searchText = searchText; 
    } 



    public String execute() { 

    Map map1 = new Map(); 
    if(environment !=null && searchText != null){ 
     map1= getMap(environment,searchText); 
     return success; 
    } 
    else{ 
     return "error"; 
    } 
} 
} 

我还没有合并JSON逻辑。触及“未定义”的部分。

回答

4

您需要使用.val()功能如下

$.ajax({ 
     type: 'POST', 
     url:'search.action?searchText='+ $("#searchValue").val()+'&environment='+$("#environmentSelect").val(), 
     dataType: 'json', 
     success: function(data){ 
      console.log(stringify(data)); 
     }}); 

的另一种方式是

$.ajax({ 
      type: 'POST', 
      url:'search.action?searchText='+ document.getElementById('searchValue').value +'&environment='+document.getElementById('environmentSelect').value, 
      dataType: 'json', 
      success: function(data){ 
      console.log(stringify(data)); 
      }}); 

希望这有助于!

+0

嘿谢谢你的回答。通过使用document.getElementId获取表单值可以正常工作,但使用$(“#searchValue”)。val()获取数据仍然会给出未定义的值。我会仔细看看的。无论如何谢谢! –

+0

它不应该给你未定义的,如果你的脚本中有jquery.min.js – Keerthivasan

+0

我知道有一个错字。谢谢 !你有什么想法如何接收JSON数据到一个jsp页面?如果你在我的struts.xml中看到,如果它是成功的,我将它定向到dummy.jsp。该页面只包含''我将它设置在我的操作类中。现在我需要在dummy.jsp中显示它。怎么做? –

1

非常重要的(如果你想从Action Class传输数据到JQuery)没有这3个jar文件,你不能将变量从Action Class传递给JQuery。

  • JSON-简单1.1.jar
  • Struts2的JSON的 - 插件 - 2.3.1.2.jar
  • 公地郎2.6.jar

struts.xml的

<package name="json" namespace="/" extends="json-default"> 
    <action name="action_name" class="com.ActionClass" method="execute"> 
     <result type="json"> 
      <param name="root">jsonData</param> 
     </result> 
    </action> 
</package> 
相关问题