2009-11-16 5 views
0

У меня проблема с этим javascript, его перезагрузка страницы и не отправка формы. !проблема с этим модулем ajax!

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

Что говорит Firebug? И я предлагаю вам использовать Javascript framework (jQuery, Prototype) для обработки запросов AJAX. –

+0

, когда я использую ввод вместо textarea, он работает несколько раз ... и я действительно не хочу использовать тяжелый JavaScript для этого – user153887

+1

Если он просто представляет форму, обновляя, что-то не так в вашей функции ajax_module(). –

ответ

0

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

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); 
    } 
} 

Вы также отметили, что текстовые входы обычно работают. Возможно, это связано с тем, что в текстовых областях разрешены новые строки, которые вы в настоящее время не кодируете.

Независимо от того, является ли это причиной или нет, вероятно, целесообразно кодировать значения в любом случае.

xmlHttp.send('user=' + encodeURIComponent(document.form1.user1.value) + 
      '&text=' + encodeURIComponent(document.form1.text1.value)); 

Для получения дополнительной информации ознакомьтесь с http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp.

Альтернативой будет escape - хотя обратите внимание на отличия символов, описанные на каждой странице.

Смежные вопросы