jquery - 通过 POST (ajax) 发送 JSON 数据并从 Controller (MVC) 接收 json 响应

标签 jquery ajax asp.net-mvc json

我在 javascript 中创建了一个这样的函数:

function addNewManufacturer() {
    var name = $("#id-manuf-name").val();
    var address = $("#id-manuf-address").val();
    var phone = $("#id-manuf-phone").val();
    
    var sendInfo = {
        Name: name,
        Address: address,
        Phone: phone
    };
    
    $.ajax({
        type: "POST",
        url: "/Home/Add",
        dataType: "json",
        success: function (msg) {
            if (msg) {
                alert("Somebody" + name + " was added in list !");
                location.reload(true);
            } else {
                alert("Cannot add to list !");
            }
        },
        data: sendInfo
    });
}

我调用了 jquery.json-2.3.min.js 脚本文件并将它用于 toJSON(array) 方法。

在 Controller 中,我有这个 Add Action

[HttpPost]
public ActionResult Add(PersonSheets sendInfo) {
    bool success = _addSomethingInList.AddNewSomething( sendInfo );

    return this.Json( new {
         msg = success
    });
      
}

但是sendInfo作为方法参数变成了null。

型号:

public struct PersonSheets
{
    public int Id;
    public string Name;
    public string Address;
    public string Phone;
}

public class PersonModel
{
    private List<PersonSheets> _list;
    public PersonModel() {
         _list= GetFakeData();
    }

    public bool AddNewSomething(PersonSheets info) {
         if ( (info as object) == null ) {
            throw new ArgumentException( "Person list cannot be empty", "info" );
         }

         PersonSheets item= new PersonSheets();
         item.Id = GetMaximumIdValueFromList( _list) + 1;
         item.Name = info.Name;
         item.Address = info.Address;
         item.Phone = info.Phone;
             
         _list.Add(item);

         return true;
    }
}

当使用 POST 发送数据时,我该怎么做?

我不知道怎么用。 此外,是否可以通过 JSON 将响应(给 ajax)发回?

最佳答案

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

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

在行动中

public ActionResult AddDomain(IEnumerable<PersonSheets> SendInfo){
...

你可以像这样绑定(bind)你的数组

var SendInfo = [];

$(this).parents('table').find('input:checked').each(function () {
    var domain = {
        name: $("#id-manuf-name").val(),
        address: $("#id-manuf-address").val(),
        phone: $("#id-manuf-phone").val(),
    }

    SendInfo.push(domain);
});

希望对您有所帮助。

关于jquery - 通过 POST (ajax) 发送 JSON 数据并从 Controller (MVC) 接收 json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8517071/

相关文章:

php - 如何使用 AJAX/jQuery 显示打印?

javascript - 索引没有按预期出现在 url 中,因此 AJAX 调用转到错误的位置 - MVC 路由 AJAX

javascript - 如何在下面提供的 JS fiddle 圆形进度条上获得箭头形状

javascript - 如何使用 jquery 访问父窗口对象?

javascript - jquery匿名函数声明的含义

c# - 附加到进程 IIS 未命中断点

json - asp.net Web API 将 JSON 日期格式更改为 UTC

jquery ajax 调用 Controller 正在发布空字符串

javascript - 如何解码包含html元素的javascript变量值

javascript - 如何提交带有表单的<li>?