学习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%> 外面加上双引号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值