AJAX/PHP echo会闪烁正确的文本,然后将其擦除
AJAX / PHP echo flashes correct text then erases it
好吧,这很奇怪。下面的代码是我开始使用AJAX的入门练习,我在文本输入中输入一些文本,单击提交按钮,然后让AJAX/PHP将其作为div中的文本进行回显。当我一次一行地遍历这段代码时,我可以看到我的文本出现在div中应该出现的行上。但是,当我跨过最后一个花括号时,文本消失了!这怎么可能??我不明白。有人能帮忙吗?谢谢
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
</head>
<body>
<script language="javascript" type="text/javascript">
<!--
window.onload = function ajaxFunction() {
document.myform.onsubmit = getFeedback;
}
function getFeedback() {
var textvalue = document.getElementById("textfield").value;
var xmlhttp;
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() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("feedback").innerHTML=textvalue;
}
}
xmlhttp.open("GET","scripts/handle_feedback.php?mytext="+textvalue,true);
//at this point in the execution, my text is displayed correctly...
xmlhttp.send();
} //...but when I step across this line, the text disappears!!!
//-->
</script>
<div id="textboxdiv">
<form name="myform">
Text Here: <input type="text" id="textfield" />
<button type="submit">Submit</button>
</form>
</div>
<div id="feedback">
</div>
</body>
</html>
问题是您没有取消提交整个页面的默认表单操作。
由于表单上没有action
属性,因此默认操作是提交到当前URL,这实际上只是重新加载当前页面。
您自己通过javascript和ajax处理表单,因此不需要默认操作,需要取消它。
有两种方法可以解决这个问题:
-
从
getFeedback()
功能返回false
或者。。。
-
首先不要使用
submit
按钮。如果您将按钮更改为type="button"
,则无需担心默认操作。如果没有javascript,单击该类型的按钮就不会有任何作用,因此您不必担心取消提交。
getfeedback()
需要以结尾
return false;
以防止发生默认表单提交。
在getFeedback函数的末尾添加:return false
另一种可能的解决方案是使用jquery。
使用jquery,您可以简单地使用
$("#mybutton").click(function(e){
e.preventDefault() //stops the form actually submitting
$('#feedback').load('scripts/handle_feedback.php?mytext='+$("#textfield").val());
});
你还需要给按钮一个ID
<button type="submit" id="mybutton">Submit</button>
相关文章:
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- ThreeJS将画布中的文本渲染为纹理,然后应用于平面
- 需要使用javascript获取输入文本,然后将其添加到句子中
- 我想重定向点击,然后更改按钮文本,我该怎么做
- 如何停止字幕文本一段时间,然后继续
- 如何放置ÅÄ和#214;在javascript数组中,然后将其与html文本进行比较
- Javascript重复模式匹配,然后输出到文本区域
- 如何删除元素的结束标记,添加一些文本,然后重新添加标记
- HTML表单选项(是或否)然后下拉文本区域
- 在HTML文本框中查找某些子字符串,然后用其他字符串替换它们
- 创建一个bookmarklet,可以检索文本框的所有最大长度,然后在表中打印id和最大长度
- 从文本框中附加url,然后使用javascript打开新窗口
- 如何检测移动浏览器(PHP/Javascript),然后进行图像/文本更改
- 文本框和选择框组合单个文本中的值(第一个tb值,然后是sb值)
- 如果所有三个文本框<>然后是100%
- 无法更新 Javascript 对象文本中的值,然后更新页面
- Chrome扩展程序获取DOM文本并在弹出窗口中显示.html然后单击按钮
- 如何将标签 ID 作为参数传递给 javascript 函数,然后根据需要获得不同标签的文本
- Javascript:从网页中获取文本,更改它,然后再次显示网页
- 如果输入文本然后删除,则文本框不会被验证为空