无法使用Ajax + JSON调用操作

6yoyoihd  于 2023-10-21  发布在  其他
关注(0)|答案(4)|浏览(100)

在我的Ajax请求中,我像这样调用action类:

var ajaxRequest;
ajaxRequest = new XMLHttpRequest();
ajaxRequest.open("GET", "../displayProjects.action?userMasterID=" + userMasterDTO.id );
ajaxRequest.send(null);

我的struts.xml如下:

<package name="default" extends="json-default">
  <action name="displayProjects"
      class="com.activitymanager.action.ExpenseTrackerAction"
      method="doGetProjectDetails">
    <result type="json"/>
  </action>
</package>

我无法使用上面的JavaScript调用action类。我怎么才能让它工作?

wgx48brx

wgx48brx1#

您可能希望使用Jquery来处理AJAX调用。请参考这个答案:Stackoverflow #12137803

hvvq6cgz

hvvq6cgz2#

使用Firebug的Network选项卡或类似的工具来查看您发送的apache请求。然后尝试将相同的请求URL放入浏览器的地址栏,看看是否有效。我的猜测是,这与你在URL中输入的“../”有关。

bwleehnv

bwleehnv3#

只需键入正确的url到您的操作

ajaxRequest.open("GET", "/displayProjects.action!doGetProjectDetails?userMasterID=" + userMasterDTO.id );
at0kjp5o

at0kjp5o4#

为什么你不使用jQuery Ajax API来实现你的应用程序调用..它使事情变得如此简单:)示例:

function Ajaxcall() {

        var xhttp = $.ajax({
            success : function(response) {
                alert("Ajax call was Successful");

            },
            url : "someAction.action",
            type : "POST",
            async : true,
            data : "name=" + str

        });

    }

你的struts.xml文件应该是这样的:

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />

    <package name="default" extends="struts-default,json-default" namespace="/">
<action name="displayProjects"
      class="com.activitymanager.action.ExpenseTrackerAction"
      method="doGetProjectDetails">
    <result name="success" type="json">/path/to/JSP-file/making/ajax/call</result>
  </action>
</package>
</struts>

相关问题