嵌套Ajax调用,内部调用运行两次

时间:2017-04-13 07:21:47

标签: jquery ajax asp.net-mvc bytestream

我是MVC的新手,我有两个Call Ajax,想在第二次调用中使用第一个调用的结果,但结果会回来两次。第二次调用ajax在第一次调用ajax时显示其中一个结果的图像。 这是我在控制器中的动作:

public ActionResult GetMaterialsPic(int id)
{
    ViewBag.Pic = db.MaterialPictures.FirstOrDefault(p => p.EntityId == id)?.Id;
    var  picFiles = db.MaterialPictures.Where(p => p.EntityId == id).Select(p => new {p.EntityId,p.Id,p.SystemFile}).FirstOrDefault();

    if (picFiles?.SystemFile != null)
        ViewBag.PicFile = Convert.ToBase64String(picFiles.SystemFile);

    return Json(picFiles,JsonRequestBehavior.AllowGet);
}

这是我的电话ajax:

  $.ajax({
            url: 'GetMaterials',
            type: "GET",
            dataType: "JSON",
            data: { id: radioselect },
            success: function (materials) {
                $("#MaterialId").html("");
                $.each(materials, function (i, value) {

                    var Id=value.MaterialId;
                    $.ajax({
                        url: 'GetMaterialsPic',
                        type: "GET",
                        dataType: "JSON",
                        data: { id: Id },
                        success: function (picFiles, status, jqXhr) {
                            var data = '@(ViewBag.PicFile)';
                            $("#MaterialId").append(
                $('<label class="radio-inline"><input type="radio"  name="MaterialsId" value="' + value.Name + '" style="position: inherit;margin-left: 20px;" />' + value.Name + ' </label><img src="data:image/png;base64,' + data + '" style="display: inline;">'));

                        },
                        error: function (jqXhr, status, errorMsg) {
                            $("#MaterialId").append(
                                             $('<label class="radio-inline"><input type="radio"  name="MaterialsId" value="' + value.Name + '" style="position: inherit;margin-left: 20px;" />' + value.Name + ' </label> <img class="img-null" alt="عکس" style="display: inline;">'));
                        }
                    });
                });
            }
        });

0 个答案:

没有答案