ajax中post的escape对有些特殊字符无法转换,例如:+ %号,因此需要对其进行扩展,由于ajax提交比较多,需要转换的字符比较多,实时性比较强,所以对应转换效率要求比较高。
以下是经过思考后完全使用正则表达式的方式实现的,代码非常简单,效率应该很高了。
coos.ajax.encodeString = function(str)
{
if (str == null || str == "")
{
return str;
}
var value = escape(str);
//替换+号为%2B
value = value.replace(/\+/g, "%2B");
//替换%号为%25如"%u2a2a dfd %u1f1f";替换后为%25u2a2a dfd %25u1f1f
value = value.replace(/%u([0-9A-F]{4})/ig,function(word){return escape(word);});
return value;
};
以前别人的一个做法,用了while循环substring match等,效率虽然感觉不出来,但看那代码就觉得很不舒服,杀伤了不少脑细胞才理解透彻后改为上面简单的正则表达式方式:
coos.ajax.encodeString = function (str)
{
if (str == null || str == "")
return str;
var ret = "";
var value = escape(str);
var match, re = /%u([0-9A-F]{4})/i;
value = value.replace(/\+/g, "%2B");
while((match = value.match(re)))
{
ret += value.substring(0, match.index) + escape("%u") + match[1];
value = value.substring(match.index+match[0].length);
}
ret += value;
return ret;
}
经过测试encodeURIComponent 不对'单引号进行编码对/进行编码
不能满足要求,encodeURI不对+号进行和'单引号进行编码也不能满足要求
下面是测试代码:
<script type="text/javascript">
var str = "a b+x%uacsd中文!@=)(+\\~`/.';'.d";
var str1 = encodeURI(str);
alert("str1= " + str1);
var str2 = encodeURIComponent(str);
alert("str2= " + str2);
var value = escape(str);
value = value.replace(/\+/g, "%2B");
value = value.replace(/%u([0-9A-F]{4})/ig,function(value){return escape(value);});
alert("value2= " + value);
if(str2 == value)
{
alert(true);
}
</script>
分享到:
- 2009-07-24 14:09
- 浏览 1439
- 评论(3)
- 论坛回复 / 浏览 (3 / 4375)
- 查看更多
相关推荐
3. **发送请求**:调用`open()`方法设置请求类型(GET/POST)、URL和是否异步,然后使用`send()`方法发送数据。 4. **接收响应**:在`onreadystatechange`事件中,当`readyState`为4且`status`为200时,表示请求成功...
- **请求发送**:使用`ajax_xmlhttp.send("sift_value="+escape(temp_value));`向服务器发送包含用户输入内容的请求。 - **响应处理**:根据服务器返回的数据更新下拉列表。 ##### 2. HTML/CSS部分 - **样式设置**...
2. 在 `test3` 函数中,使用 `postform` 作为表单 ID,调用 `AJAXFORM` 方法提交表单。 3. 指定回调函数为 `yoyo3`,以及扩展参数 `attach` 的值为 `showContent`。 4. `yoyo3` 函数的具体实现未给出,但通常会处理...
GET方法的数据会显示在URL中,而POST方法则将数据隐藏在请求体中,对于敏感信息通常推荐使用POST。 在PHP端,我们使用`$_POST`或`$_GET`全局数组来获取表单数据。例如,如果HTML表单有一个名为`username`的输入字段...
需要注意的是,上述代码示例中使用了已废弃的`mysql_*`函数集,考虑到安全性与性能,推荐使用`mysqli`或`PDO`扩展。此外,为了进一步提高安全性,SQL语句应当使用参数化查询来防止SQL注入。 综合以上内容,实现类似...
这里,我们从POST请求中获取ID和标题,对标题进行解码和转义以防止SQL注入,然后执行更新数据库的SQL查询。如果查询成功,返回1表示成功;否则,返回0表示失败。 总结来说,这个实现的关键在于利用Ajax和JSON技术,...
用户在前端填写留言后,通过HTTP POST方法提交数据到服务器。PHP将处理这些POST数据,例如使用`$_POST`全局数组来获取表单字段值。然后,这些数据会被用来创建新的留言记录或更新已有记录。 4. 实时更新: "在线...
例如,使用`$.ajax()`或`$.post()`方法向服务器发送异步请求,获取新的留言并动态插入到页面上。 - 还可以利用jQuery实现一些视觉效果,如淡入淡出、滚动加载更多留言等。 4. **前端交互**: - 用户界面通常包含...
这些接口通常遵循RESTful原则,使用HTTP方法如GET、POST、PUT和DELETE来操作资源。 综上所述,FFS5-Mini v120731 最终版是一个涵盖了众多PHP开发技术的项目,从基础的文件操作到复杂的用户认证、数据库交互,再到...
- 使用PHP的`PDO`(PHP Data Objects)或者`mysqli`扩展连接到数据库,执行INSERT语句,将新留言保存到`messages`表中。 - 提交成功后,可以使用`header()`函数重定向回`index.php`,刷新页面显示最新的留言列表。 ...
(XML取消了所有标识,包括font,color,p等风格样式定义标识,因此XML全部是采用类似DHTML中CSS的方法来定义文档风格样式。),XML中用来设定显示风格样式的文件类型有: 1.XSL XSL全称是Extensible Stylesheet ...
在上述示例中,`$_POST[province_id]`应使用预处理语句或`mysqli_real_escape_string`进行处理。 6. **前端交互**:前端可能还需要处理其他交互细节,如默认选项、错误提示、加载指示器等,以提供更好的用户体验。 ...
在聊天应用中,这通常涉及到POST请求来发送消息,GET请求来获取新消息。 2. **数据库交互**:为了存储和检索聊天记录,PHP通常会与MySQL等关系型数据库配合。它使用SQL语句来创建、读取、更新和删除(CRUD)数据。 ...