这个ajax模块有问题!

时间:2009-11-16 21:03:24

标签: php javascript ajax

我有这个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>

2 个答案:

答案 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错误?