javascript - 我如何在没有 ajax 调用的情况下在 window.location 中传递数组

标签 javascript c# jquery asp.net-mvc

我想在 ExportTo 方法中发送列表数组,但在 ExportTo 方法中学生参数得到空值。如果我使用 ajax,它会工作正常。但是必须使用 window.locatoin 作为传递列表数组。

查看

            $(document).ready(function () {

            $("#SaveBtn").click(function () {

                var student = {

                    Name: "Tanzid",
                    Department: "CSE"

                };
                var student1 = {

                    Name: "Yasir",
                    Department: "BBA"

                };
                var list = [];

                list.push(student);
                list.push(student1);

               var url = '@Url.Action("ExportTo", "Students")';

               var a = JSON.stringify(list);

               window.location = url + '?' + a;
            });
        })

.
Controller

Public void ExportTo(List<Student> student)
    {




    }

最佳答案

我在不使用 ajax 的情况下测试了您的问题及其工作的某些场景:

首先评论你的代码,因为我没有它。

从索引 View :

@{
    ViewBag.Title = "Index";
}
<script src="~/scripts/jquery-1.10.2.js"></script>
<h2>Index</h2>
<script>


     $(document).ready(function () {

    var person = [];
    person.push("Reign");//change like $("#idname").val();
    person.push("John");
    var listOfObjects = [];
    person.forEach(function (names) {
        var singleObj = {}
        singleObj['name'] = names;
        singleObj['dept'] = 'IT Dept.';
        listOfObjects.push(singleObj);
    });

    var url = '@Url.Action("Sample", "Home")';

    window.location = url + '?id=' + JSON.stringify(listOfObjects);
})

家庭 Controller :

 public ActionResult Sample()
    {
       string getval = Request.QueryString["id"];
       string concat = @"{""data"":" + getval + "}";


        ValList vl = new JavaScriptSerializer().Deserialize<ValList>(concat);

        foreach (var item in vl.data)
        {
            Console.WriteLine("dept: {0}, name: {1}", item.dept, item.name);
        }

        return View();
    }


    public class ValList
    {

        public List<Values> data { get; set; }
    }

    public class Values
    {
        public string name { get; set; }
        public string dept { get; set; }
    }

一切正常,只取决于您的项目代码:

        //var List = [];
        //var a = {
        //    Name: $("#").val(),
        //    Dept: $("#").val()
        //};
        //List.Push(a);

这就是我得到的..

已根据您的需求进行测试..祝您好运

关于javascript - 我如何在没有 ajax 调用的情况下在 window.location 中传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47862799/

相关文章:

c# - 将不可读的数据库数据显示为可读格式

javascript - 为 Google Charts 返回具有日期类型的 JSON 数组

javascript - 如何将文本区域中的某些文本对齐为右对齐?

javascript - 在 backbone.js 中使用全局变量

javascript - Android/iOS ReactNative/Native 中的 CSS 和 HTML 渲染

javascript - Heatmap DC.js - 如何手动过滤多个项目

c# - Xaml 使用隐藏属性

javascript - 如何在 MySQL 查询中传递 Javascript 变量

javascript - 如何让插件的默认设置访问最终设置?

javascript - TextTrackList onchange 事件在 IE 和 Edge 中不起作用