在我的Ajax
请求中,我正在调用这样的动作类:
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调用动作类。我如何使这个工作?
答案 0 :(得分:1)
您可能希望使用Jquery来处理您的AJAX调用。请参阅此答案:Stackoverflow #12137803。
答案 1 :(得分:1)
使用Firebug的“网络”选项卡或某些此类工具查看您要发送的ajax请求。然后尝试将相同的请求URL放入浏览器的地址栏中,看看它是否有效。我的猜测是它与你在URL中放置的“../”有关。
答案 2 :(得分:0)
只需为您的操作输入正确的url
ajaxRequest.open("GET", "/displayProjects.action!doGetProjectDetails?userMasterID=" + userMasterDTO.id );
答案 3 :(得分:0)
为什么你不使用Jquery Ajax apis来进行你的ajax调用..它让事情变得如此简单:) 例如:
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>