jquery ajax和data的使用

function print(selId){
		$.ajax({
		 url: "/car/schedule/outCar/hasPrint?id="+selId,
		   type: "POST",
		   async:true,
		   //回调函数
		   success: function(msg){
		   },
		   error: function(){
			    alert("是否打印信息更新失败");
		   } 
		});
	}
		//部分代码片段
		function printOrder(){
			//url:path+'/car/schedule/outCar/print?id='+id,
				buttons: {
				"打印" : function(){
				 print(selId);
				 //$("#printSpaceDiv").printArea();                     
				},
				}
		}

------------------

data发送到服务器的数据。将自动转换为请求字符串格式。GET请求中将附加在URL后。查看processData选项说明以禁止此自动转换。必须为Key/Value格式。如果为数组,jQuery将自动为不同值对应同一个名称。如{foo:["bar1","bar2"]}转换为'&foo=bar1&foo=bar2'。

示例:

$.ajax({
   type: "POST",
   url: "some.php",
   data: "name=John&location=Boston",
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
});

这里data后面跟的参数可以用二种表式:一种是普通url传参的写法一样,还有一种就是写在json数组里,

上面示例data部分也可以这样写:data:{name:"John",location:"Boston"}。这二个用法有什么区别?

今天在开发中发现二者用法的细微差别。第一种我们用url传参,参数里面如果加带"&"这个符号的话,可能参数接收不到或不完整,如“data:"name=John&location=Boston",”,

如果name的值是"john&smith"这样写可能就会有问题,我们可以用JS里面的encodeURIComponent()方法进行转义,

但如果用data:{name:"John",location:"Boston"}这种方式写的话就不需要进行转义,如果转义的话,接收的将是转义后的字符串

相关推荐