Ajax请求传对象到后台

一、例子:

function User(){
    this.name = $("#name").val();
    this.sex = $("#sex").val();
    this.age = $("#age").val();
}
var user = new User();
$.ajax({
    type : "post",
    dataType : "json",
    url: "<%=basePath%>UserServlet",
    cache: false,
    data : {user:JSON.stringify(user)},
    success : function(data) {

    }
});

var user={
    name : $("#name").val();
    sex : $("#sex").val();
    age : $("#age").val();
}

$.ajax({
    type : "post",
    dataType : "json",
    url: "<%=basePath%>UserServlet",
    cache: false,
    data : {user:JSON.stringify(user)},
    success : function(data) {

    }
});

取数据:

User user = (User) JSONObject.toBean(JSONObject.fromObject(request.getParameter("user")), User.class);


在学习这个的时候,遇到了如下几个问题。

1、js中,new一个对象和直接调用一个对象有什么区别?

function Person(name,age){  
  
this.name=name;  
this.age=age;  
this.sayName=function(){  
alert(this.name);  
      };  
}  
  
var person1=new Person("张三",20); //构造对象,构造对象的话,返回的新对象是由解析器自己生成的。  
var person2=Person("李四",18); //函数调用,如果我在Person函数里面加了return "你好"; 这时的person就不会报undefined,而是一个字符串你好  
person2.sayName();//报错 person2是普通函数调用,没有给定返回值。  
  
//因为此时this指向window对象,  
window.sayName();//此时不会报错  
  
为什么赋值给person2,可以用window来引用呢?  
因为如果不用new就相当于普通函数调用,而 Person()根本没有返回值,  
所以Person根本就没赋值给person2,此时的person2只是一个undefined,  
但是Person却执行了一次,成为了window的对象,this指向了window,所以window可以直接使用Person的方法。 

构造函数不需要显示的返回值。使用new来创建对象(调用构造函数)时,如果return的是非对象(数字、字符串、布尔类型等)会忽而略返回值;如果return的是对象,则返回该对象。
下面简单介绍下,javascript中new对象的过程:如var myObj = new  Person(“aty”,25);
1.创建一个空的Object对象.var obj = new Object();
2.将构造函数Person中this指向刚创建的obj对象。
3.将创建的obj的__proto__指向构造函数Person的prototype。这一步是建立对象和原型直接的对应关系。firefox下通过
对象的__proto__属性能够访问到原型,IE下则没有暴露出相应的属性。

4.执行构造函数Person()中的代码。


2、JSON.parse()与JSON.stringify()的区别?

json.parse():方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象

json.stringify():方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串










猜你喜欢

转载自blog.csdn.net/weixin_40877388/article/details/80660929
今日推荐