Ajax 网页和服务器怎么互相传值
来源:互联网 发布:创世中文网数据查询 编辑:程序博客网 时间:2024/05/17 08:10
这里使用jquery的封装好的ajax讨论
1.根据我的测试,传送数组是传送不过去的,可以以字符串形式即username=%E5%BC%A0%E4%B8%89&age=18&sex=%E7%94%B7或者对象形势,即{},[{},{}....] 传递
$.ajax({
type : "POST",
url : "./server.php",
data : obj,
dataType : "json",
success : function(data){
}
});
案例1:
var obj = $("form").serialize(); //序列化表单数据
//console.log(obj); username=%E5%BC%A0%E4%B8%89&age=18&sex=%E7%94%B7
案例2:
var obj = {"a":1, "b":2};
案例3:
var obj = {"list":{"a":1, "b":2}};
案例4:
var obj = {"list":[{"a":1, "b":2},{"c":1, "d":2}]};
案例5:
var obj = {"list":{"a":1, "b":2},"as":{"c":1, "d":2}};
案例6:
var obj = {"list" : [{"a":1, "b":2},{"c":1, "d":2}],"sa":[{"a":1, "b":2},{"c":1, "d":2}]};
案例7:
var str = '{"list" : [{"a":1, "b":2},{"c":1, "d":2}],"sa":[{"a":1, "b":2},{"c":1, "d":2}]}';eval("var obj4="+str);
案例7中的str是json字符串,就是拼接成json格式的一个字符串,还得用eval函数转一下,才能变成json对象,用typeof函数可以明确获取这个串是json,还是个json字符串
一个项目中用到的是案例3中的格式,通信一次就可以传多组数据过去,不然还要循环多次和服务器通信:
var list = {"list":[{"key" : "1-1,5,6,7", "number" : 1}, {"key" : "1-1,5,6,9", "number" : 2}]};
2.然后就是服务器发给网页端的数据了,一般是一维,二维,echo json_ecode(数组),客户端可以这么处理:
①一维数组
success : function(data){
data.attr_type
}
②二维数组
$(data).each(function(k,v){
v.attr_type
}
③更复杂的数组
php:
$arr = array(
'data' => $data, //二维数组
'yxData' => $yxData, //二维数组
'pageCount' => $pageCount, //非数组
);
echo json_encode($arr);
js:
success : function(data){
data.yxData // 这样获取的内容就可以用上面提到的二维数组方法处理了
data.pageCount //这样可以直接获取值
}
4.Json_encode中文乱码问题,在5.4的php版本中已经解决,在之前的版本中,需要先用urlencode,或者干脆自己写一个函数实现json_encode的功能
$testJSON=array('name'=>'中文字符串','value'=>'test'); //echo json_encode($testJSON); foreach ( $testJSON as $key => $value ) { $testJSON[$key] = urlencode ( $value ); } echo urldecode ( json_encode ( $testJSON ) );
5.项目是gbk的要注意:
Ajax默认是utf8的格式传送数据,注意用iconv转一下
案例:项目是gbk编码的,网页端做一个搜索,要输入中文,中文通过ajax提交到服务器,如果不转码,接收到的字符串就是乱码
$newData=iconv("utf-8","gbk//IGNORE",$data);
//ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符都不会被保存。
6.ajax的调试方法
get方式:直接去访问这个ajax模块,带上需要的参数,
http://xxxxxxx/index.php/Home/comment/Getpl?id=2
post的:也是直接去访问这个ajax模块,至于参数,可以在这个模块里面先写好一些测试的数据
http://xxxxxxx/index.php/Home/comment/Getpl
这样调试的好处就是所有报错都能看到,数组结构什么的用var_dump打印出来也很清晰,很好调试
- Ajax 网页和服务器怎么互相传值
- Ajax 网页和服务器通信
- JSP使用AJAX与Servlet互相传值
- AJAX客户端和服务器之间的传值理解
- js和php互相传值
- js和php 互相传值 参数
- 怎么区分静态网页和动态网页
- 网页怎么实现随机数页面传值
- 服务器上运行Ajax架构的网页
- 怎么把做好的网页用deramweaver传上互联网 空间和域名怎么申请
- 怎么能在ajax加载完之后再加载网页
- 怎么区分web服务器和应用服务器
- AJAX和服务器交互实例
- 两台电脑之间怎么互相传文件
- struts---action和页面间互相传值
- Android和Luaj之间互相传值的问题
- (Android基础)activity 和 fragment互相传值
- 怎么使用Ajax向Asp服务器请求一个XML文档
- css选择器中:first-child与:first-of-type的区别
- QT5.5.1 嵌入式平台 鼠标键盘不能热插拔问题解决(一)
- Retrofit文件上传与下载(xjh 这应该是retrofit1的代码 亲测不行)___http://www.ithao123.cn/content-7813575.html
- Qt “undefined reference to `vtable for”
- ElasticSearch(四)-分布式文档存储
- Ajax 网页和服务器怎么互相传值
- 2016android面试题
- jeasyUI popWindow插件,适用jeasyui1.4.x
- Genymotion无法启动虚拟机的问题解决办法
- iOS学习笔记之六--图片移动的基本界面 UIBotton的应用
- [转载]linux查询历史记录命令history的用法介绍
- mysql 之索引初步
- Notepad++ 快捷键大全
- Activitys, Threads和 内存泄露