如何在没有 ajax 调用的情况下在 window.location 中传递一个数组
Posted
技术标签:
【中文标题】如何在没有 ajax 调用的情况下在 window.location 中传递一个数组【英文标题】:how can i pass an array in window.location without ajax call 【发布时间】:2018-05-31 11:04:43 【问题描述】:我想在 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;
);
)
. 控制器
Public void ExportTo(List<Student> student)
【问题讨论】:
尝试在这里完成您的问题。 我想通过 windows.location 将数组列表从视图传递到控制器,但它发送空值。我已经发送了一个对象并获得了我用于 $.param 的值,我可以工作,但它不适用于列表。 为什么你不想使用ajax
?
我需要没有 ajax 调用的解决方案
您需要使用集合索引器发送查询字符串 - 例如...?[0].Name=someValue&[0].Dept=someValue&[1].Name=someValue&....
(假设该方法的参数是IEnumerable<T>
,其中T
包含这些属性)。但是你到底为什么要这样做呢? - 除了丑陋的查询字符串,你可能会超过查询字符串限制并抛出异常。
【参考方案1】:
我已经在不使用 ajax 的情况下测试了您的问题的一些场景及其工作:
先评论你的代码,因为我没有它。
从索引视图:
@
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);
)
HomeController:
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);
这就是我得到的一切..
已根据您的需要进行了测试。祝您好运
【讨论】:
首先完成您的阵列...在继续任何操作之前使用alert("your array string here")
。因为我不知道你的数组是从哪里来的。
如果你想检查你的数组,你可以使用alert(JSON.stringify(List))
;
值来自一个表。并在发送到控制器后添加到列表中
Json.stringify 仅用于 ajax 调用。我已经试过了,但没用
使用自定义模型或类然后创建一个列表,抱歉不知道你的想法是什么......以上是关于如何在没有 ajax 调用的情况下在 window.location 中传递一个数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 AJAX 的情况下在 Rails 客户端过滤数据
Ajax 将带有两个数组的 JSON 对象发送到一个 servlet 并在没有 jQuery 的情况下在 java servlet 中解析
如何在不刷新html页面的情况下在表格上显示数据(使用nodejs和mysql ajax)
如何在没有控制台窗口的情况下在 Windows 上启动最新的 Jupyter QtConsole