1. 程式人生 > >學習Ajax時遇到的一些小問題

學習Ajax時遇到的一些小問題

問題1
變數定義的問題

 <Script type="text/javascript">

 function  check(){
    var xmlhttp;
    var url;
    url = document.getElementById("userid").value;
    if(window.XMLHttpRequest){
        xmlhttp=new XMLHttpRequest();
    }
    else {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"
); } xmlhttp.onreadystatechange=callback; xmlhttp.open("post", "Ajax/myAjax.jsp?username="+escape(url) ,true) xmlhttp.send(); } function callback(){ if(xmlhttp.readyState==4 && xmlhttp.status== 200){ var um = document.getElementById("myDiv"); um.innerHTML= xmlhttp.responseText; } else
{ alert(xmlhttp.readyState); alert(xmlhttp.status); } }
</Script>
在函式check呼叫callback的時候 由於xmlhttp定義在check裡面.所以
執行報錯:xmlhttp未定義;

修改後:
  var xmlhttp;
 function  check(){
    var url;
    url = document.getElementById("userid").value;
    if(window.XMLHttpRequest){
        xmlhttp=new
XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=callback; xmlhttp.open("post", "Ajax/myAjax.jsp?username="+escape(url) ,true) xmlhttp.send(); } function callback(){ if(xmlhttp.readyState==4 && xmlhttp.status== 200){ var um = document.getElementById("myDiv"); um.innerHTML= xmlhttp.responseText; } else{ alert(xmlhttp.readyState); alert(xmlhttp.status); } } </Script>

問題2
測試執行時 表現為 xmlhttp.readystate 一直等於0的問題
後才發現是check函式呼叫 callback函式時出了問題.

xmlhttp.onreadystatechange=callback();
function callback(){}

這種錯誤寫法是指callback函式會將返回值賦值給 xmlhttp.onreadystatechange

所以正確寫法為:不加括號

xmlhttp.onreadystatechange=callback;
function callback(){}

問題4
在JavaScript中 獲取 HTML的標籤的 value 值中遇到空格的問題
問題描述01

<script type="text/JavaScript">
function ponclick(){
var str = document.getElementById("p").innerHTML;
alert(str);//結果為a b c
document.getElementById("p").outerHTML="<input value=" + str + ">" ;
}//結果為 a 空格後面內容丟失
</script>

  <p id="p" onclick="ponclick()" >a b c</p> 

解決辦法:

<script type="text/JavaScript">
function ponclick(){
var str = document.getElementById("p").innerHTML;
document.getElementById("p").outerHTML="<input value=" + "''" + str+ "''" + ">" ;//在str 上加上雙引號;
}
</script>

  <p id="p" onclick="ponclick()" >a b c</p> 

問題描述02

在JSP 中 input 帶有空格的 value 值 丟失問題

<input name="name" type="text" value=<%=name%>>
 <!-- name如果為 "a  b  c" 只有a能顯示出來-->

解決辦法

<input name="name" type="text" value= "<%=name%>" >

在<%name%> 外面加上雙引號