ajax处理的字符含有中文等非英文字符时可能会出现乱码,这时候只要使用encodeURIComponent()函数处理一下即可.
要将ajax的返回值赋给变量,需要将异步方式改为同步.
试看以下代码:
<?php
if(isset($_GET['val'])){
echo str_repeat($_GET['val'],10);
exit;
}
?>
<script type="text/javascript">
function get_ajax_html(Url,Value,ID){
var xmlHttp,html;
Value = encodeURIComponent(Value);//解决ajax乱码问题
if(window.ActiveXObject){
xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
}else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}else{
return '浏览器不支持ajax';
}
xmlHttp.open("GET",Url + Value,false);//这里false代表同步,true代表异步.
xmlHttp.onreadystatechange=function(){
html = xmlHttp.readyState == 4 ? xmlHttp.responseText : '请稍等...';
};
xmlHttp.send(null);
return html;
}
function $(o){
return document.getElementById(o);
}
function get_ajax_value(o,ID){
var v=get_ajax_html('?val=',o.value,ID);
$(ID).innerHTML=v;
}
</script>
<div id="show"></div>
<input onkeyup="get_ajax_value(this,'show')" />
-----------
如果不使用同步方式.那么ajax每次返回的值赋给变量v以后变量v都是undefined. |
|