Java 使用Jquery Ajax将数据从jsp发送到struts2操作类

Java 使用Jquery Ajax将数据从jsp发送到struts2操作类,java,jquery,ajax,jsp,struts2,Java,Jquery,Ajax,Jsp,Struts2,我需要使用jQueryAjax将表单数据从jsp传递到struts2,并从struts2操作类接收回JSON数据。 我已经给出了下面的代码。当我传递AJAX数据时 url:'search.action?searchText='+ $('searchValue').value+'&environment='+$('environmentSelect').value 将从jsp向action类传递“undefined”而不是原始值 我的JSP <div id="tab0">

我需要使用jQueryAjax将表单数据从jsp传递到struts2,并从struts2操作类接收回JSON数据。 我已经给出了下面的代码。当我传递AJAX数据时

url:'search.action?searchText='+ $('searchValue').value+'&environment='+$('environmentSelect').value
将从jsp向action类传递“undefined”而不是原始值

我的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>
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>
我还没有合并JSON逻辑。被“未定义”部分击中。

您需要使用
.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));
          }});
希望这有帮助

非常重要(如果您想将数据从Action类传输到JQuery),没有这3个jar文件,您无法将变量从Action类传递到JQuery

  • json-simple-1.1.jar
  • struts2-json-plugin-2.3.1.2.jar
  • commons-lang-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>

杰森达

嘿,谢谢你的回答。使用document.getElementId获取表单值效果很好,但是使用$(“#searchValue”).val()获取数据仍然会导致未定义的错误。我会留意的。无论如何,谢谢你!如果你的脚本中有jquery.min.js,它不应该给你未定义的,我知道有一个输入错误。非常感谢。您知道如何将JSON数据接收到jsp页面中吗?如果您在我的struts.xml中看到它是否成功,那么我将它定向到dummy.jsp。该页面仅包含我在action类中设置的
。现在我需要在dummy.jsp中显示它。如何做到这一点?您希望服务器提供json值。因此,您需要创建json字符串并返回到客户端。检查这个链接@Keerthivasan:如果表单中有很多元素,我们希望将所有这些参数作为bean传递,而不是像struts2中使用的模型那样单独传递每个参数,那该怎么办?请您建议是否可以这样做
 $.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));
          }});
<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>