jquery - MVC Ajax 返回部分 View 但未显示

标签 jquery ajax asp.net-mvc asp.net-mvc-4

我有一个页面,首先要求提供一些详细信息,然后在其下方的 div 中返回部分 View 。

这是我的 Ajax(自从我测试它以来,详细信息正在被获取并相应地传递给 Controller ​​)​​:

<script type="text/javascript">
function Filter() {
    var startd = $('#startdt').val();
    var endd = $('#enddt').val();
    var itemname = $("#Products option:selected").val();

    var param = { StartD: startd, EndD: endd, ItemName: itemname };

    $.ajax({
        url: '@Url.Action("FilterTransaction")',
        type: "POST",
        datatype: "html",
        UpdateTargetId: "divResult",
        data: param,
        error: function (xmlHttpRequest, errorText, thrownError) {
            alert(xmlHttpRequest + "|" + errorText + "|" + thrownError);
        },
        success: function (data) {
            $('divResult').html(result);
        }
    });
}
</script>

这是 Controller (方法和变量均已正确处理):

public PartialViewResult FilterTransaction(string StartD, string EndD, string ItemName)
    {
        try
        {
            int productid = new ProductService.ProductsServiceClient().GetProductID(ItemName);
            Product p = new ProductService.ProductsServiceClient().GetProduct(productid);
            ViewBag.ItemNo = productid;
            ViewBag.ItemName = p.Name;
            ViewBag.AmmountP = p.Price;
            int orderid = new OrderService.OrderServiceClient().GetOrderID(productid, User.Identity.Name);
            Order o = new OrderService.OrderServiceClient().GetOrder(orderid);
            ViewBag.DatePurchased = o.Date;
            ViewBag.WarrantyExpiryDate = o.Date.AddYears(2);

            DateTime fromd = Convert.ToDateTime(StartD);
            DateTime todate = Convert.ToDateTime(EndD);
            todate = todate.AddDays(1);

            List<PrintViewFD> printv = new List<PrintViewFD>();
            foreach (FaultDetail fs in new FaultService.FaultServiceClient().GetListOfFaultDetailsbetweenDATES(orderid, productid, fromd, todate))
            {
                PrintViewFD pvd = new PrintViewFD();
                pvd.date = fs.Date.ToString();
                pvd.details = fs.Details;
                pvd.faultid = fs.FaultID;
                FaultStatu fss = new FaultService.FaultServiceClient().GetStatus(fs.FaultStatusID);
                pvd.status = fss.Status;
                printv.Add(pvd);
            }

            ViewBag.FaultDetailsLIST = printv;
            return PartialView("_filtertransactions");
        }
        catch
        {
            return PartialView("_filtertransactions");
        }
    }

我调试了该函数,它正在进入 Controller 方法和部分 View 。唯一的问题是局部 View 当时没有显示在 View 中。我认为这与ajax有关!

这是应该显示它的 div:

<div id="divResult">test</div>

最佳答案

你的ajax调用的成功方法有一个错误。您需要将 divResult 更改为“#divResult”并将“data”附加到 html 而不是“success” 尝试这样的事情:

$.ajax({
    url: '@Url.Action("FilterTransaction")',
    type: "POST",
    datatype: "html",
    UpdateTargetId: "divResult",
    data: param,
    error: function (xmlHttpRequest, errorText, thrownError) {
        alert(xmlHttpRequest + "|" + errorText + "|" + thrownError);
    },
    success: function (data) {
        $("#divResult").empty(); //In case you're going to refresh this multiple times
        $("#divResult").html(data);
    }
});

关于jquery - MVC Ajax 返回部分 View 但未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23143816/

相关文章:

javascript - .filter 的 jQuery 用法

javascript - 如何使用 jQuery 在 summernote 编辑器中获取输入的内容?

asp.net-mvc - Moq Roles.AddUserToRole 测试

asp.net - 如何控制重复的 Ajax 'post' 提交?

asp.net-mvc - 403 - 禁止 : Access is denied. ASP.Net MVC

javascript - 使用 jQueryUI/Bootstrap 对话框延迟 jQuery

javascript - Jquery创建新元素,但之后不会删除该元素

jquery - MVC Api Controller 与 JSON.stringify 的混淆

javascript - 在 jQuery 中保持 GET 连接打开

javascript - 将 blob url 转换为 FormData() 的上传文件并通过 AJAX 将其发送到 PHP 文件