【问题标题】:$.post with Object param$.post 与对象参数
【发布时间】:2014-11-12 20:36:07
【问题描述】:

我正在尝试使用自定义模型发布帖子:

public class CallbackPriorityItemModel
{
    public int userID { get; set; }
    public int order { get; set; }
    public string name { get; set; }
}

但我无法让它工作。我必须遵循代码:

function updateUserCallbackList() {
    var cbList = [];
    $(".callbackListItem").each(function () {
        cbList.push({
            Name: this.id,
            Order: $('li').index(this.parentElement),
            UserId: _userID
        });
    });
    var args = {
        CbList: cbList,
        UserID: _userID
    };
    $.post(SiteUtil.urlContent('/api/AccountApi/UpdateCallbackPriorityList?' +   $.param(args)));
}

调用此方法:

[HttpPost]
public void UpdateCallbackPriorityList(CallbackPriorityItemModel[] cbList, int userID)

我已经确认 cbList 在 javascript 中不为空,但在点击 UpdateCalbackPriorityList 时它始终为空,尽管用户 ID 不为空。我尝试过使用其他方法:

var url = SiteUtil.urlContent('/api/AccountApi/UpdateCallbackPriorityList/');
 $.ajax({
     url: url,
     type: 'POST',
     data: JSON.stringify(args),
     dataType: 'json',
     contentType: 'application/json; charset=utf-8'
 });

但我收到错误消息说浏览器找不到 UpdateCallbackPriorityList。 有什么建议吗?

;

【问题讨论】:

  • 我认为您的方法需要为 static 才能通过 AJAX 调用。即使这样,我也不确定 MVC 是否可以在没有任何特定说明的情况下从一个普通的 http 请求创建一个复杂的对象。

标签: javascript c# ajax http-post


【解决方案1】:

尝试类似:

$.ajax({
    url: SiteUtil.urlContent('/api/AccountApi/UpdateCallbackPriorityList'),
    type: 'POST',
    data: args,
    contentType: 'application/json; charset=utf-8'
});

较新版本的 jQuery 自动序列化传递给 $.ajax 数据参数的对象。

除此之外,您的 JS 变量名中的大小写与 C# 不匹配 - 我不确定 ASP 是否相应地纠正了这一点,尝试更改 JS 以匹配 C# 并查看是否有帮助不会有什么坏处。

【讨论】:

    猜你喜欢
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2018-04-05
    • 2014-05-30
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多