使用Ajax传递数据时,通常会将数据整理为postStr = “mac=00-12-3F-61-B4-18&hwinfo=”+hwinfo;而当数据中存在加号(+)或是连接符(&)时,服务器端接收数据时(+)(&)会变空格。
分析Ajax传递数据的格式与Javascript的语法:
1. “+”号:JavaScript解析为字符串连接符,所以服务器端接收数据时”+”会丢失变空格。
2. “&”:JavaScript解析为变量连接符,所以服务器端接收数据时&符号以后的数据都会丢失变空格。
解决方法是将(+)(&)通过正则进行编码替换

var hwinfo="WfiERodghwdogTo+eodfEfodi&dofeidi(%^%eof";
hwinfo=hwinfo.replace(/\+/g,"%2B");
hwinfo=hwinfo.replace(/\&/g,"%26");
//接收表单的URL地址
var url = "TermHwInfoSet_ajax.php";
//需要POST的值,把每个变量都通过&来联接
var postStr = "mac=&hwinfo="+hwinfo;
//实例化Ajax
var ajax = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest) 
{ //Mozilla 浏览器
ajax = new XMLHttpRequest();
  if (ajax.overrideMimeType) {//设置MiME类别
  ajax.overrideMimeType("text/xml");
  }
}
else if (window.ActiveXObject) { // IE浏览器
  try {
  ajax = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
    ajax = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {}
  }
}
if (!ajax) { // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
//通过Post方式打开连接
ajax.open("POST", url, true); 
//定义传输的文件HTTP头信息
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
//发送POST数据
ajax.send(postStr);
//获取执行状态
ajax.onreadystatechange = function() { 
//如果执行状态成功,那么就把返回信息写到指定的层里
  if (ajax.readyState == 4 && ajax.status == 200) { 
  var Rvalue = ajax.responseText;//获取返回值
  }
}
  • Tags:

发表评论/留言

为了您的身体健康、潇洒、美丽、帅气,请不要灌水。

/ 快捷键:Ctrl+Enter