возникли проблемы с этим модулем AJAX! - PullRequest
0 голосов
/ 17 ноября 2009

У меня проблема с этим 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 ]

1 голос
/ 17 ноября 2009

Дважды проверьте, чтобы в 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 - однако, обратите внимание на различия символов, описанные на каждой странице.

0 голосов
/ 17 ноября 2009

Возможно, это отсутствующий самозакрывающийся тег на входе пользователя? Есть ли ошибка JavaScript?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...