【发布时间】:2011-03-01 05:46:33
【问题描述】:
我想通过 AJAX 更新输入文本框的值。尽管几乎相同的 AJAX 代码仅适用于“文本”,但我无法使其正常工作。 ff 和 chrome 的行为相同。
唯一的区别是
doesn't work ---> document.getElementById("f1").value=revision;
works fine -----> document.getElementById("f2").innerHTML=revision;
works fine too -> onClick="javascript:document.getElementById('f1').value+='B';"
示例代码:
<input type="text" name="f1" id="f1">
<input type="button" value="inline function" onClick="javascript:document.getElementById('f1').value+='B';">
<input type="button" value="AJAX Button" onClick="get_revision2('trunk')">
和功能
function get_revision2(revision)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
document.getElementById("f1").value=revision;
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("f1").value=xmlhttp.responseText;
}
}
xmlhttp.open("GET","http://radek:4567/svn_get_revision?code_base="+revision+"&t=" + Math.random(),true);
xmlhttp.send();
}
AJAX 代码不会更新文本框的值。内联函数可以。
但是对于文本(不是输入文本框),即使 AJAX 也可以正常工作。
<DIV id="f2">revision</div>
<input type="button" value="inline function" onClick="javascript:document.getElementById('f2').innerHTML+='B';">
<input type="button" value="AJAX" onClick="get_revision3('3.0')">
和功能
function get_revision3(revision)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
document.getElementById("f2").innerHTML=revision;
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("f2").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","http://radek:4567/svn_get_revision?code_base="+revision+"&t=" + Math.random(),true);
xmlhttp.send();
}
【问题讨论】:
-
最简单的解释是AJAX请求失败。如果 xmlhttp.status 不是 200,请尝试添加警报
-
@Hans:AJAX 调用在更新文本时有效。并且在文本框值未更新的情况下,“radek”服务器接收 AJAX 调用。
标签: javascript ajax