jquery中$.ajax方法提交表单解析
jquery中$.ajax方法提交表单解析。
代码如下:
function postdata(){ //提交数据函数
$.ajax({ //调用jquery的ajax方法
type: "post", //设置ajax方法提交数据的形式
url: "ok.php", //把数据提交到ok.php
data: "writer="+$("#writer").val(), //输入框writer中的值作为提交的数据
success: function(msg){ //提交成功后的回调,msg变量是ok.php输出的内容。
alert("数据提交成功"); //如果有必要,可以把msg变量的值显示到某个div元素中
}
});
}
jquery手册描述:
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"}这种方式写的话就不需要进行转义,如果转义的话,接收的将是转义后的字符串。