Ajax Post数据加号与连接符丢失
采用Ajax传递数据时,通常会将数据整理为data="var1=abc&var2=def"。而当数据中存在加号(+)或是连接符(&)时,服务器端接收数据时会有部分数据丢失现象。分析一下Ajax传递数据的格式与Javascript的语法不难发现:
1. "+"号:JavaScript解析为字符串连接符,所以服务器端接收数据时"+"会丢失。
2. "&":JavaScript解析为变量连接符,所以服务器端接收数据时&符号以后的数据都会丢失。
解决办法也相当简单,只需要为+与&符号编码即可: 查看详细内容…
打造CakePHP Ajax请求Action
在CakePHP的开发模式下,也就是Debug为2的时候,CakePHP会自动显示Sql查询语句及程序执行时间。当要用到Ajax去请求Action的时候难免会被这些语句干扰,使Javascript难解析出Ajax请求后的数据。为此可以这样来定义Ajax请求的action。
- function ajaxaciton() {
- $this->layout = '';
- // 禁止自动Render,免去为此Action去建View的烦扰
- $this->autoRender = false;
- // 手动定义为运营模式,去除debug信息
- Configure::write("debug", 0);
- //以utf-8的文本模式输出
- header("Content-type: text/plain; charset=utf-8");
- /*您的程序*/
- // 输出整理后的数据
- echo $message;
- }
生成Ajax对象 支持Ie Firefox Opera
生成Ajax对象 支持Ie Firefox Opera,代码如下:
- function ajax() {
- var xmlHttp;
- try { // for firefox opera
- xmlHttp = new XMLHttpRequest();
- } catch (e) { // for ie
- var ieVersions = new Array("MSXML2.XMLHTTP.6.0",
- "MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0",
- "MSXML2.XMLHTTP.3.0",
- "MSXML2.XMLHTTP",
- "Microsoft.XMLHTTP");
- for (var i = 0; i < ieVersions.length && !xmlHttp; i ++) {
- try {
- xmlHttp = new ActiveXObject(ieVersions[i]);
- } catch (e) {
- }
- }
- }
- if (!xmlHttp) {
- return false;
- } else {
- return xmlHttp;
- }
- }
