ajax其他参数为空?
ajax other parameter is null?
为什么我的其他参数为空。 "date" 和 "ids" 为空,而我的 "postedFile" 和 "amount" 有数据。但是当我尝试删除 "postedFile" 参数时。 ID 和日期有一个值。它工作正常。但我需要 postedfile 参数
我的脚本
var ids = [];
function add(id, isChecked) {
if (isChecked) {
ids.push(id);
}
else {
var i = ids.indexOf(id);
ids.splice(i, 1);
}
}
function saveSelected() {
//var shipmentId = $('#c-shipment-id').val();
var date = $('#Date').val();
var amount = $('#Amount').val();
//var ImageFile = $('#imageUploadForm').val();
$('#imageUploadForm').on("change", function () {
var formdata = new FormData($('form').get(0));
CallService(formdata);
});
function CallService(postedFile) {
$.ajax({
url: '@Url.Action("index", "payment")',
type: 'POST',
data: { ids: ids, amount: amount, date: date, postedFile: postedFile },
cache: false,
processData: false,
contentType: false,
traditional: false,
dataType:"json",
success: function (data) {
alert("Success");
}
});
}
}
我的控制器
public ActionResult Index(int?[] ids, decimal? amount, DateTime? date, HttpPostedFileBase postedFile)
{
return View();
}
正如上面的评论,我想你可以尝试传递所有带参数的值,而不是变量,比如:CallService(formdata, ids, amount, date)
。它可能有效。
回答您的次要问题 - 在带有复选框列的 table 中获取所有选定的 ID:
首先,将 ID
添加到视图中复选框的 ID 中,例如:
foreach (var m in Model.Data)
{
row++;
<tr class="@(row % 2 == 0 ? "alter" : "")">
<td class="first">
<input id="chk_@m.ID" type="checkbox" onclick="js_selone(this)" />
</td>
...
然后,创建一个 JS 方法 getSelVal()
来获取所有选定的 ID 和 return 与 ,
组合的字符串,例如:1,2,3.
$.fn.getSelVal = function () {
for (var e = "", t = $("input[type=checkbox]", this), n = 0; n < t.length; n++) t[n].checked && (e += "," + js_getid(t[n].id));
return e.Trim(",");
}
最后,您可以调用该方法并将 ids
或 ids.toString().split(',')
传递给 AJAX 请求:
ids = $('.table td').getSelVal().toString().split(',');
CallService(formdata, ids, amount, date)
function CallService(postedFile, ids, amount, date) {
$.ajax({
url: '@Url.Action("index", "payment")',
type: 'POST',
data: { ids: ids, amount: amount, date: date, postedFile: postedFile },
cache: false,
processData: false,
contentType: false,
traditional: false,
dataType:"json",
success: function (data) {
alert("Success");
}
});
为什么我的其他参数为空。 "date" 和 "ids" 为空,而我的 "postedFile" 和 "amount" 有数据。但是当我尝试删除 "postedFile" 参数时。 ID 和日期有一个值。它工作正常。但我需要 postedfile 参数
我的脚本
var ids = [];
function add(id, isChecked) {
if (isChecked) {
ids.push(id);
}
else {
var i = ids.indexOf(id);
ids.splice(i, 1);
}
}
function saveSelected() {
//var shipmentId = $('#c-shipment-id').val();
var date = $('#Date').val();
var amount = $('#Amount').val();
//var ImageFile = $('#imageUploadForm').val();
$('#imageUploadForm').on("change", function () {
var formdata = new FormData($('form').get(0));
CallService(formdata);
});
function CallService(postedFile) {
$.ajax({
url: '@Url.Action("index", "payment")',
type: 'POST',
data: { ids: ids, amount: amount, date: date, postedFile: postedFile },
cache: false,
processData: false,
contentType: false,
traditional: false,
dataType:"json",
success: function (data) {
alert("Success");
}
});
}
}
我的控制器
public ActionResult Index(int?[] ids, decimal? amount, DateTime? date, HttpPostedFileBase postedFile)
{
return View();
}
正如上面的评论,我想你可以尝试传递所有带参数的值,而不是变量,比如:CallService(formdata, ids, amount, date)
。它可能有效。
回答您的次要问题 - 在带有复选框列的 table 中获取所有选定的 ID:
首先,将 ID
添加到视图中复选框的 ID 中,例如:
foreach (var m in Model.Data)
{
row++;
<tr class="@(row % 2 == 0 ? "alter" : "")">
<td class="first">
<input id="chk_@m.ID" type="checkbox" onclick="js_selone(this)" />
</td>
...
然后,创建一个 JS 方法 getSelVal()
来获取所有选定的 ID 和 return 与 ,
组合的字符串,例如:1,2,3.
$.fn.getSelVal = function () {
for (var e = "", t = $("input[type=checkbox]", this), n = 0; n < t.length; n++) t[n].checked && (e += "," + js_getid(t[n].id));
return e.Trim(",");
}
最后,您可以调用该方法并将 ids
或 ids.toString().split(',')
传递给 AJAX 请求:
ids = $('.table td').getSelVal().toString().split(',');
CallService(formdata, ids, amount, date)
function CallService(postedFile, ids, amount, date) {
$.ajax({
url: '@Url.Action("index", "payment")',
type: 'POST',
data: { ids: ids, amount: amount, date: date, postedFile: postedFile },
cache: false,
processData: false,
contentType: false,
traditional: false,
dataType:"json",
success: function (data) {
alert("Success");
}
});