平平庸庸

小试ajax(给自己看的)

上一篇 / 下一篇  2009-12-21 11:42:23 / 个人分类:测试工具

近期碰到一个问题:md5.js对中文的处理有问题,这个问题的成因还没有深究(应该深究一下,可能是系统服务器和模拟页面服务器操作系统使用的默认编码不同造成。说不定)。

 

一、解决的思路

1、添加一个使用php计算md5的页面。原测试页面使用问post访getmd5.php获得散列结果后在发送给目标接口

2、添加一个使用php计算md5的页面。原测试页面使用xmlhttprequest访问问getmd5.php获得散列结果后发送给目标接口

二、思路分析

以上两个方法都能解决上面的这个问题。但出于已有的脚本。为了避免这些脚本的改动方法二显然更好,因为这样改动之后,操作的过程不会发生变化。所以选择方法二。

三、关键方法

测试页面


var xmlHttp;
var md5Field;

 

function showmd5(str)
{
  xmlHttp=GetXmlHttpObject();

  if (xmlHttp==null)
    {
    alert ("您的浏览器不支持AJAX!");
    return;
    }

  var url="showmd5.php";
  url=url+"?"+encodeURI(str);
  //alert(str);
  //alert(encodeURI(str));
  xmlHttp.onreadystatechange=stateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function stateChanged()
{

if (xmlHttp.readyState==4)
{
//alert(xmlHttp.responseText);
var strone=xmlHttp.responseText;
md5Field.value=strone.substr(strone.length-32,strone.length);
}
}

function GetXmlHttpObject()
{
  var xmlHttp=null;
  try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
    // Internet Explorer
    try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
return xmlHttp;
}

getmd5.php

<META   HTTP-EQUIV="pragma"   CONTENT="no-cache">        
<META   HTTP-EQUIV="Cache-Control"   CONTENT="no-cache,   must-revalidate">        
<META   HTTP-EQUIV="expires"   CONTENT="0">     
<META. http-equiv=Content-Type content="text/html; charset=utf-8">
<?php  
 $query = $_SERVER['QUERY_STRING'] ? $_SERVER['QUERY_STRING'] : "";  
 $querynew=urldecode($query);
 echo strtoupper(md5($querynew));
 ?>

 

 


TAG:

 

评分:0

我来说两句

Open Toolbar