如何将多个值作为单个对象在Javascript/Ajax中传递
如何将多个值作为单个对象在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; } }
问题的原因是代码中尝试将多个值作为单个对象传递给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中进行相应更改。