Jquery 使用字典参数发布到操作

发布于 2024-11-28 12:02:53 字数 768 浏览 0 评论 0原文

我感觉似曾相识,但我找不到答案: 我有一个对象数组,在检查 jQ $.post 调用时需要看起来像这样:

limiter[0].Key
limiter[0].Value

以便它在操作中映射

public ActionResult SomeAction(Dictionary<Guid, string> dictionary) { }

但是,这个 javascript:

// Some Guid and Some Value
var param = [ { 'Key' : '00000000-0000-00000-000000', 'Value': 'someValue' } ];

$.post('/SomeController/SomeAction/',
       {
       dictionary: limiter,
       otherPostData: data
       },
       function(data) {
          callback(data);
       }
)

在 firebug 中检查它时会产生这个:

limiter[0][Key] = someKey // Guid Value
limiter[0][Value] = someValue

这是在 jq 1.4.2 中。我似乎记得你需要设置一些标志才能在 jQ 中以不同的方式呈现 json。这是否敲响了警钟?

I am feeling dejavu, but I cannot find the answer to this:
I have an array of objects that needs to look like this when inspecting a jQ $.post call:

limiter[0].Key
limiter[0].Value

so that it is mapped in the action

public ActionResult SomeAction(Dictionary<Guid, string> dictionary) { }

However, this javascript:

// Some Guid and Some Value
var param = [ { 'Key' : '00000000-0000-00000-000000', 'Value': 'someValue' } ];

$.post('/SomeController/SomeAction/',
       {
       dictionary: limiter,
       otherPostData: data
       },
       function(data) {
          callback(data);
       }
)

produces this when inspecting it in firebug:

limiter[0][Key] = someKey // Guid Value
limiter[0][Value] = someValue

This is in jq 1.4.2. I seem to remember some flag you need to set to render json a different way in jQ. Does this ring any bells?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

神爱温柔 2024-12-05 12:02:54

您将看到 post 参数为 limiter[0][Key] 因为 jquery 在发布之前会序列化 json 数据。控制器操作可以很好地解释这一点,并且您可以在操作中获得所需的输入。

You will see the post param as limiter[0][Key] because jquery serializes the json data before it posts it. This is very well interpreted by the controller action and you get the required input in the action.

野侃 2024-12-05 12:02:54

您还可以使用对象列表,结果将与您想要的相同。这是一个很好的例子。

http:// /www.mikesdotnetting.com/Article/96/Handling-JSON-Arrays-returned-from-ASP.NET-Web-Services-with-jQuery

You can also use a list of objects and the result will be the same as what you wanted. This is a nice example.

http://www.mikesdotnetting.com/Article/96/Handling-JSON-Arrays-returned-from-ASP.NET-Web-Services-with-jQuery

枫林﹌晚霞¤ 2024-12-05 12:02:53

尝试这样:

var param = {
    '[0].Key': '28fff84a-76ad-4bf6-bc6d-aea4a30869b1', 
    '[0].Value': 'someValue 1',

    '[1].Key': 'd29fdac3-5879-439d-80a8-10fe4bb97b18', 
    '[1].Value': 'someValue 2',

    'otherPostData': 'some other data'
};

$.ajax({
    url: '/Home/SomeAction/',
    type: 'POST',
    data: param,
    success: function (data) {
        alert(data);
    }
});

应该映射到以下控制器操作:

public ActionResult SomeAction(Dictionary<Guid, string> dictionary, string otherPostData) 
{ 
    ...
}

Try like this:

var param = {
    '[0].Key': '28fff84a-76ad-4bf6-bc6d-aea4a30869b1', 
    '[0].Value': 'someValue 1',

    '[1].Key': 'd29fdac3-5879-439d-80a8-10fe4bb97b18', 
    '[1].Value': 'someValue 2',

    'otherPostData': 'some other data'
};

$.ajax({
    url: '/Home/SomeAction/',
    type: 'POST',
    data: param,
    success: function (data) {
        alert(data);
    }
});

should map to the following controller action:

public ActionResult SomeAction(Dictionary<Guid, string> dictionary, string otherPostData) 
{ 
    ...
}
又怨 2024-12-05 12:02:53
var dict = {}
dict["key1"] = 1
dict["key2"] = 2
dict["key3"] = 3

$.ajax({
        type: "POST",
        url: "/File/Import",
        data: dict,
        dataType: "json"
});

public void Import(Dictionary<string, int?> dict)
{
}

只需将您的 obj 作为 dataType: "json" 发送

var dict = {}
dict["key1"] = 1
dict["key2"] = 2
dict["key3"] = 3

$.ajax({
        type: "POST",
        url: "/File/Import",
        data: dict,
        dataType: "json"
});

public void Import(Dictionary<string, int?> dict)
{
}

just send your obj as dataType: "json"

少女七分熟 2024-12-05 12:02:53

您可以使用此标志 -

jQuery.ajaxSetting.traditional = true;

让 jQuery 以与您所看到的格式不同的格式发布数据。请参阅此问题以获取更多信息 -

使用 jQuery 在 ajax 调用中传递数组1.4

You can use this flag -

jQuery.ajaxSetting.traditional = true;

To get jQuery to post the data in a different format to the one you are seeing. See this question for further info -

Passing arrays in ajax call using jQuery 1.4

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文