我有以下代码:
<form action="" onsubmit="getSelectedPlace(this);" target="_blank">
<div class="wrap_input">
<input type="submit" id="myDiv" class="btn buy_btn" value="Done">
</div>
</form>
function getSelectedPlace(form) {
var placesID = new Array();
$(".place.green").each(function () {
placesID.push($(this).attr("id"));
});
form.action = "/Pay/Buy?places=" + placesID;
return true;
}
在getSelectedPlace
我得到ID
并将其推入数组,并填写action
。
我的行动:
public ActionResult Buy(string[] places)
{
return new EmptyResult();
}
在萤火虫中placesID
被填满。但在我的行动中places
是null
。如果我将string[]
更改为简单string
,则结果相同。
哪里有问题?
感谢。
答案 0 :(得分:2)
请注意传统参数序列化。更多详情:http://api.jquery.com/jQuery.param/
<script type="text/javascript">
var strArray = new Array();
strArray[0] = "P1";
strArray[1] = "P2";
var params = { data: strArray };
$.ajax({
type: "GET",
url: "/Home/Test",
data: params,
dataType: "json",
traditional: true
});
</script>
}
控制器:
public ActionResult Test(string[] data)
{
@ViewBag.Test = data[0]; // Data will be set to P1
return null;
}
答案 1 :(得分:1)
我建议你只使用string
。用逗号或任何其他符号表示。
function getSelectedPlace(form) {
var placesID = "";
$(".place.green").each(function () {
placesID = $(this).attr("id") + "," + placesID;
});
form.action = "/Pay/Buy?places=" + placesID;
return true;
}
在行动中,
public ActionResult Buy(string places)
{
string[] placesArray = places.Split(",");
return new EmptyResult();
}
同样使用onsubmit="getSelectedPlace(this);"
并不安全。使用onsubmit="return getSelectedPlace(this);"
答案 2 :(得分:1)
我的解决方案:
将HttpPost
添加到操作中,然后将method="POST"
添加到表单中。