我有这个javascript的问题,它重新加载页面而不提交表单。 !
var xmlHttp
function GetXmlHttpObject(){
var objXMLHttp=null;
if (window.XMLHttpRequest){
objXMLHttp=new XMLHttpRequest();
}else if (window.ActiveXObject){
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return objXMLHttp
}
function ajax_module()
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null){
alert ("Browser does not support HTTP Request");
return
}
xmlHttp.open('POST', 'save.php');
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
xmlHttp.send('user='+document.form1.user1.value+'&text='+document.form1.text1.value);
document.form1.test1.value = '';
document.form1.test1.focus();
}
HTML
<form name="form1" method="POST" onsubmit="ajax_module(); return false;">
<textarea name='text1'></textarea>
<input type='hidden' name='user1' value='$user' />
<input type="submit" name="submit" value="submit" />
</form>
答案 0 :(得分:1)
仔细检查ajax_module
内是否发生错误。如果有,则永远不会到达return false
,也不会停止onsubmit
。
如果您有Firebug或类似的调试器,请在ajax_module
内设置断点。否则,请在try
内添加catch
/ ajax_module
:
function ajax_module() {
try {
/* place what you already have here */
} catch (e) {
alert(e);
}
}
您还评论说文本输入通常有效。这可能是因为textareas中允许使用换行符,您目前没有编码。
无论是否原因,无论如何都要编码这些值可能是一个好主意。
xmlHttp.send('user=' + encodeURIComponent(document.form1.user1.value) +
'&text=' + encodeURIComponent(document.form1.text1.value));
有关详细信息,请查看http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp。
另一种选择是escape
- 但请注意每页上描述的字符差异。
答案 1 :(得分:0)
也许这是用户输入中缺少的自闭标签?是否存在JavaScript错误?