$ .post with Object param

时间:2014-11-12 20:36:07

标签: javascript c# ajax http-post

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

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中不为null,但是当它到达UpdateCalbackPriorityList时它总是为null,尽管userID不为null。我试图使用其他方法:

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。 建议?

1 个答案:

答案 0 :(得分:0)

尝试类似:

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

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

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