學習Ajax時遇到的一些小問題
阿新 • • 發佈:2019-02-06
問題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%> 外面加上雙引號