程式開發過程中,前台向背景發送請求及傳遞參數,目前個人總結為三種方式,具體如下:
一、表單送出:
表單送出可分為get請求跟post請求,一般隻做查詢時用get請求,還做其他操作時(如:更新等)用post請求,執行個體如下:
前台表單:
<form id="test" action="/product_notify/save" method="get">
<input type="text" id="quantity" name="quantity" value="1" maxlength="4"/>
...
</form>
or
<form id="test" action="${base}/product_notify/save" method="post">
<input type="text" id="quantity" name="quantity" value="1" maxlength="4"/>
...
</form>
action:請求位址(背景controller映射路徑)
背景controller接收:
@GetMapping("/product_notify/save")//若是get請求則用@GetMapping,若是post請求則用@PostMapping注解!
public String checkouts(Integer quantity//接收前台表單input标簽name為quantity的值
){}
二、Ajax請求:
前台請求:
$.ajax({
url: "/product_notify/save",//請求路徑
type: "POST",//請求方式
data: {skuId: skuId, email: $productNotifyEmail.val()},//請求參數
dataType: "json",
beforeSend: function() {
$addProductNotify.prop("disabled", true);
},
success: function(data) {
$addProductNotify.val("${message("shop.product.addProductNotify")}");
$productNotify.hide();
},
complete: function() {
$addProductNotify.prop("disabled", false);
}
});
背景接收:同表單送出!
三、普通請求:
前台請求:
var cartItemIds = new Array();
var quantitys = new Array();
var j = 0;
for (var i = 0, len = tr.length; i < len; i++) {
if (tr[i].getElementsByTagName('input')[0].checked) {
cartItemIds[j] = tr[i].getElementsByTagName('input')[0].value;
quantitys[j] = tr[i].getElementsByTagName('input')[2].value;
j++;
}
}
location.href="${base}/order/checkouts?cartItemIds=" target="_blank" rel="external nofollow" +cartItemIds+"&quantitys="+quantitys;
可直接傳遞數組參數!
背景controller接收:
@GetMapping("/checkouts")//該處要使用GetMapping而不能使用PostMapping,普通請求是get請求方式!
public String checkouts( String[] cartItemIds,String[] quantitys){}
以上都可以用request.getParameter("參數key");擷取指定參數!