可能重复:
在jQuery中序列化为JSON
我想发送一个数组作为Ajax请求:
info[0] = 'hi';
info[1] = 'hello';
$.ajax({
type: "POST",
url: "index.php",
success: function(msg){
$('.answer').html(msg);
}
});
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在创建一个小应用程序来自学ASP.NET MVC和JQuery,其中一个页面是一个项目列表,其中一些可以选择.然后我想按下一个按钮并使用JQuery的Post函数向我的控制器发送一个List(或类似的东西),其中包含所选项目的ID.
我设法得到一个数组,其中包含所选元素的ID,现在我想发布它.我可以这样做的一种方法是在我的页面中有一个虚拟表单,带有隐藏值,然后使用所选项目设置隐藏值,并发布该表单; 不过,这看起来很狡猾.
有没有更简洁的方法来实现这一点,通过将阵列直接发送到控制器?我尝试了一些不同的东西,但看起来控制器无法映射它接收的数据.这是迄今为止的代码:
function generateList(selectedValues) {
var s = {
values: selectedValues //selectedValues is an array of string
};
$.post("/Home/GenerateList", $.toJSON(s), function() { alert("back") }, "json");
}
Run Code Online (Sandbox Code Playgroud)
然后我的控制器看起来像这样
public ActionResult GenerateList(List<string> values)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
我设法获得的只是控制器参数中的"null"...
有小费吗?
首先,我一直在查看我能找到的所有可以在JQuery Ajax调用上处理此错误的帖子,但是大多数帖子都是由于错误的dataTypes预期回来了,我很确定这不是我的问题,因为这段代码已经工作了之前.
我要做的是当我单击其中一个复选框时,我想要检索带有模型的局部视图,并在我的主视图中的#selectedProductContainer中填充它.
这是我正在运行的脚本的主要观点(缩短了很多):
@model ProductMainViewModel
<div class="product-list-wrapper">
@Html.CheckBoxListFor(m => m.PostedProducts.ProductIds,
m => m.AvalibleProducts,
entity => entity.Id,
entity => entity.Name,
m => m.SelectedProducts,
m => new { @class = "productCheckboxList productSelected" + m.Id, data_price = m.Price.ToString() })
</div>
<div id="selectedProductContainer">
</div>
<script>
$(".productCheckboxList[type='checkbox']").change(function () {
var isChecked = $(this).is(":checked");
var value = $(this).val();
if (isChecked) {
ProductChange(this);
}
function ProductChange(element) {
var value = {
Value: element.value
}
var container = $("#selectedProductContainer");
$.ajax({
url: "@Url.Action("ProductCalcSelection", "Home")",
type: "POST",
data: JSON.stringify(value), …Run Code Online (Sandbox Code Playgroud)