java 如何使用 Ajax 和 Struts2 将表单数据发送到 ActionSupport
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15020981/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to send form data to ActionSupport using Ajax and Struts2
提问by ved prakash
when am not using Ajax then all well and good with same code. but using ajax here am got null vale for same public String execute() throws Exception { String strAction = cartItemForm.getAction(); /*i am geting null here using ajax call but simple stuts2 getting action value which i have in <s:hidden name="action" value="Add" id="action" />
it means getting add */ return "success"; }
当我不使用 Ajax 时,使用相同的代码一切顺利。但是在这里使用 ajax 对于相同的 public String execute() 得到 null vale throws Exception { String strAction = carItemForm.getAction(); /* 我在这里使用 ajax 调用得到 null,但简单的 stuts2 获取我在其中的动作值<s:hidden name="action" value="Add" id="action" />
意味着得到添加 */ return "success"; }
this is jsp
这是jsp
<script type="text/javascript">
function submitAjax()
{
JSONobj = {cartItem:{
description : $("description").val(),
price :$("price").val(),
action : $("action").val(),
quantity :$("quantity").val(),
} };
JSONstr = JSON.stringify(JSONobj);
jQuery.ajax(
{
type: 'POST',
url: 'Cart.action',
data:JSONstr,
dataType: 'json',
async: false ,
contentType: 'application/json; charset=utf-8',
success: function(){window.alert("done");}
});
}
</script>
<s:form>
<s:hidden name="modelNo" value="%{#attr.productId}" />
<s:hidden name="description" value="%{#attr.productName}" id="description" />
<s:hidden name="price" value="%{#attr.listprice}" id="price" />
<s:hidden name="action" value="Add" id="action" />
<s:submit value="add to cart" cssClass="submit_button" theme="simple" />
</s:form>
This is struts.xml
这是 struts.xml
<action name="Cart" class="struts.cart.action.CartAction">
<result type="json"/>
</action>
Here is MY Action Class
这是我的动作课
public class CartAction extends ActionSupport
implements ModelDriven, Preparable, ServletRequestAware {
private static final long serialVersionUID = -3670063011948002290L;
public static final String ADD = "Add";
public static final String DELETE = "Delete";
public static final String UPDATE = "Update";
public static final String CART_SESSION = "Cart";
private HttpServletRequest request;
private CartItemForm cartItemForm;
public String execute() throws Exception {
String strAction = cartItemForm.getAction();//i am geting null here
return "success";
}
public Object getModel() {
// TODO Auto-generated method stub
System.out.println("Cart getModel "+cartItemForm);
return cartItemForm;
}
public void prepare() throws Exception {
// TODO Auto-generated method stub
System.out.println("Cart prepare "+cartItemForm);
cartItemForm=new CartItemForm();
}
public void setServletRequest(HttpServletRequest httpServletRequest) {
// TODO Auto-generated method stub
request = httpServletRequest;
}
}
采纳答案by Jaiwo99
I am not sure, if i have understand your question, it is very straightforward to do this. Here is a possible solution with jquery:
我不确定,如果我理解你的问题,这样做很简单。这是jquery的一个可能的解决方案:
<s:form id="myForm">
<s:hidden name="modelNo" value="%{#attr.productId}"></s:hidden>
<s:hidden id="description" name="description" value="%{#attr.productName}"></s:hidden>
<s:hidden id="price" name="price" value="%{#attr.listprice}"></s:hidden>
<s:hidden id="action" name="action" value="Add"></s:hidden>
<s:submit id="#submit" value="add to cart" cssClass="submit_button" theme="simple"></s:submit>
</s:form>
<script>
$("#submit").click(function(){
var formData = $("#myForm").serialize(); //get all data from form
//do the POST thingies
$.ajax({
type: "POST",
url: "url_to_your_struts2_action",
cache: false,
data: formData,
success: onSuccess,
error: onError
});
return false;
});
</script>