【问题标题】:ajax other parameter is null?ajax 其他参数是否为空?
【发布时间】:2020-05-14 07:14:53
【问题描述】:

为什么我的其他参数为空。 “date”和“ids”为空,而我的“postedFile”和“amount”有数据。但是当我尝试删除“postedFile”参数时。 ids 和 date 有一个值。它工作正常。但我需要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();
    }

【问题讨论】:

  • 看起来代码没问题。您能否尝试调试(F11debugger;),并在 AJAX 调用之前检查它们是否有值?
  • 感谢您在我尝试提醒显示值的日期时回复。当我在警报后单击确定时,值为空
  • 感谢它工作的日期值,但我在 'ids' 中遇到问题,因为它是数据表的一部分。如何获取数据表中选择的所有 id。 ?非常感谢
  • datatable 是否表示页面中包含复选框列的表格?并且您想要获取所有选定的 ID?
  • 是的,复选框是列。是的,我需要获取所有选定的 ID。

标签: asp.net-mvc asp.net-ajax


【解决方案1】:

正如上面的 cmets,我想您可以尝试使用参数而不是变量传递所有值,例如:CallService(formdata, ids, amount, date)。它可能有效。

回答您的第二个问题 - 在带有复选框列的表格中获取所有选定的 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,并返回一个与 , 组合的字符串,例如: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(",");
}

最后,您可以调用该方法并将idsids.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");
            }
        });

【讨论】:

    猜你喜欢
    • 2020-04-02
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2015-07-06
    • 2012-12-26
    • 1970-01-01
    • 2017-12-12
    相关资源
    最近更新 更多