javascript - 使用 JavaScript 索引变量访问 ViewBag 数组项

标签 javascript jquery ajax asp.net-mvc

我正在尝试访问全局 javascript 变量,以便将其作为数据的一部分传递给我的 ajax 函数。由于当前上下文中不存在 imageIndex ,因此苦苦思索如何做到这一点。 JavaScript:

<script type="text/javascript">
        var imageIndex = 0;
        $(document).ready(function () {
            var imageIndex = 0;

            getImage();

            function getImage() {
                $.ajax({
                    type: "GET",
                    url: '@Url.Action( "GetImage", "Tally" )',
                    data: { imageName: '@(ViewBag.images[imageIndex])', contractID: '@(ViewBag.contractId)' },
                    //dataType: "image/jpeg;base64",
                    success: function (data) {
                        console.log(data);
                        $('#scanImage').attr('src', 'data:image/jpeg;base64,' + data.myImage);
                        $("#imageName").val('@(ViewBag.image)');
                        imageIndex++;
                    },
                    error: function () {
                        console.log("got error");
                    }
                });
            }
        });

    </script>

最佳答案

问题

1. 从顶部删除 imageIndex 初始化之一。出于所有意图和目的,我想说,对于您的情况来说,哪一种并不重要。

2. imageIndex 被包含为 imageName 作为字符串的一部分,而不是变量的值.

<小时/>

棘手的部分

Razor 不会让我们像通常那样简单地连接变量,例如:

imageName: '@(ViewBag.images[' + imageIndex + '])' 

因为我们在服务器端 @ 中包含单引号,C# 会告诉您文字溢出。

<小时/>

解决方案

相反,我们需要从 ViewBag.images 数组中填充一个普通的 JavaScript 数组。

   var imageArray = @Html.Raw(Json.Encode(@ViewBag.images));
// var imageArray = ["image1", "image2", "image3"];

从那里,我们现在可以使用imageArray[imageIndex]来检索我们正在寻找的值。

$(document).ready(function () {
    var imageIndex = 0;

    //Convert our ViewBag.images into a JS array
    var imageArray = @Html.Raw(Json.Encode(@ViewBag.images));
    getImage();

    function getImage() {
        $.ajax({
            type: "GET",
            url: '@Url.Action( "GetImage", "Tally" )',
            data: { imageName: imageArray[imageIndex], contractID: '@(ViewBag.contractId)' },
            //dataType: "image/jpeg;base64",
            success: function (data) {
                console.log(data);
                $('#scanImage').attr('src', 'data:image/jpeg;base64,' + data.myImage);
                $("#imageName").val('@(ViewBag.image)');
                imageIndex++;
            },
            error: function () {
                console.log("got error");
            }
        });
    }
});

关于javascript - 使用 JavaScript 索引变量访问 ViewBag 数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42281842/

相关文章:

javascript - 如何使用javascript获取div中图像的来源?

javascript - Javascript (V8) 是否优化未使用的返回值

javascript - 匿名函数: "object is not a function"

jquery - 使用 JQuery 中的 anchor 从当前页面和其他页面链接到特定(隐藏)选项卡?

jQuery 选择器问题

当 url 来自不同服务器时,jQuery.ajax 失败

javascript - 从数组中删除特定元素

javascript - 处理 Promise.all() 中每个 Promise 的响应对象

php - 使用 PHP 将推荐数量和推荐 ID 添加到 MySQL 数据库中

jquery - 使用 jQuery 和 Ajax 解析 XML RSS 提要