如何将多个值作为单个对象在Javascript/Ajax中传递

35 浏览
0 Comments

如何将多个值作为单个对象在Javascript/Ajax中传递

我是javascript和MVC的新手,我正在开发一个包含注册页面的示例应用程序,并且我正在使用ajax来完成这个过程,我目前的代码如下:

function create() {
    var user_name = $("#txtUser").val();
    var pass = $("#txtPass").val();
    var email = $("#txtEmail").val();
    var phone = $("#txtPhone").val();
    var city = $("#txtCity").val();
    var state = $("#txtState").val();
    var zip = $("#txtZip").val();
    $.ajax({
        url: '/EmberNew/Home/Create',
        type: 'POST',
        data: { user_name: user_name, pass: pass,email:email,phone:phone,city:city,state:state,zip:zip },
        success: function (response) {
            alert("success");
        }
    });
    return false;
}

它正常工作,但我想知道是否有办法将这些值作为单个对象传递,就像在C#中一样,请原谅我如果这个问题太愚蠢了。

服务器端代码

[HttpPost]
public ActionResult Create(User user)
{
    UserDL newUser = new UserDL();
    newUser.SignUp(user);
    return Json(new { success = true });
}

我还想知道有没有办法直接将这些值与我的服务器端对象合并。

User.cs

public class User
{
    public virtual int ID { get; set; }
    public virtual string UserName { get; set; }
    public virtual string Password { get; set; }
    public virtual string EmailID { get; set; }
    public virtual int Phone { get; set; }
    public virtual string City { get; set; }
    public virtual string State { get; set; }
    public virtual int Zip { get; set; }
}

0
0 Comments

问题的原因是代码中尝试将多个值作为单个对象传递给JavaScript / Ajax的方法。解决方法是将所有变量存储在名为data的单个对象中,并将其传递给Ajax请求的data参数。

以下是解决方法的代码示例:

function create() {
    var data = {
        'UserName': $("#txtUser").val(),
        'Password': $("#txtPass").val(),
        'EmailID': $("#txtEmail").val(),
        'Phone': $("#txtPhone").val(),
        'City': $("#txtCity").val(),
        'State': $("#txtState").val(),
        'Zip': $("#txtZip").val()
    };
    $.ajax({
        url: '/EmberNew/Home/Create',
        type: 'POST',
        data: data ,
        success: function (response) {
            alert("success");
        }
    });
    return false;
}

为了在User对象中获取值,属性名称必须与JavaScript对象中的名称和参数名称匹配。如果要共享User类定义,可以将其添加到问题中。

以下是更新后的代码示例:

function create() {
    var user = {
        'EmailID': $('#emailid').val(),
        'password': $('#password').val()
    };
    $.ajax({
        url: '/EmberNew/Home/Create',
        type: 'POST',
        data: { user:user },
        success: function (response) {
            alert("hi");
        }
    });
    return false;
}

如果在类定义中更改了属性名称,请确保在JavaScript中进行相应更改。

0