gpt4 book ai didi

jquery - 通过 jQuery ajax 将 JSON 对象数组发送到 MVC3 操作方法

转载 作者:行者123 更新时间:2023-12-03 22:16:27 26 4
gpt4 key购买 nike

模型绑定(bind)器不支持 JSON 对象数组吗?下面的代码在发送单个 JSON 域对象作为 ajax post 的一部分时起作用。但是,当发送 JSON 域对象数组时,action 参数为 null。

     var domains = [{
DomainName: 'testt1',
Price: '19.99',
Available: true
}, {
DomainName: 'testt2',
Price: '15.99',
Available: false
}];

$.ajax({
type: 'POST',
url: Url.BasketAddDomain,
dataType: "json",
data: domains,
success: function (basketHtml) {

},
error: function (a, b, c) {
alert('A problem ocurred');
}
});

这是操作方法:

public ActionResult AddDomain(IEnumerable<DomainBasketItemModel> domain)
{
...

如果可以做到这一点,有什么想法吗?

编辑

@Milimetric

您的解决方案有效!然而,这是我的错,但我演示的代码并不是我的问题的真正代码,我试图展示更容易理解的等效代码。

我实际上正在创建一个数组,然后插入一些 DOM 元素并将 JSON 对象推送到该数组上,然后将此数组作为数据发布...

var domains = [];

$(this).parents('table').find('input:checked').each(function () {
var domain = {
DomainName: $(this).parent().parent().find('.name').html(),
Price: $(this).parent().parent().find('.price span').html(),
Available: $(this).parent().parent().find('.available').html() == "Available"
}

domains.push(domain);
});

$.ajax({
type: 'POST',
url: Url.BasketAddDomain,
dataType: "json",
data: { domain: domains },
success: function (basketHtml) {

},
error: function (a, b, c) {
alert('A problem ocurred');
}
});

最佳答案

您需要:

var domains = { domains: [... your elements ...]};

$.ajax({
type: 'post',
url: 'Your-URI',
data: JSON.stringify(domains),
contentType: "application/json; charset=utf-8",
traditional: true,
success: function (data) {
...
}
});

一般来说,检查调试器中的 Request 对象,您将看到正在传递的内容并了解如何“讲”HTTP。

注意:刚刚发现这一点。模型绑定(bind)器因可为空的小数属性而阻塞,例如:

public decimal? latitude { get; set; }

因此,如果您使用如下所示的 json 字符串发布到它,它不会绑定(bind)它:

{"latitude":12.0}

但如果你发布这样的内容,它就会起作用:

{"latitude":"12.0"}

参见:http://syper-blogger.blogspot.com/2011/07/hello-world.html

关于jquery - 通过 jQuery ajax 将 JSON 对象数组发送到 MVC3 操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6031206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com