2009-11-16 6 views
0

J'ai un problème avec ce javascript, c'est de recharger la page et de ne pas soumettre le formulaire. !ayant un problème avec ce module 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

Que dit Firebug? Et je vous suggère d'utiliser un framework Javascript (jQuery, Prototype) pour gérer les requêtes AJAX. –

+0

lorsque j'utilise une entrée à la place de textarea cela fonctionne quelques fois ... et je ne veux vraiment pas utiliser JavaScript lourd pour cela – user153887

+1

Si cela ne fait que soumettre le formulaire en rafraichissant, quelque chose ne va pas dans votre fonction ajax_module(). –

Répondre

0

Peut-être est l'étiquette d'auto-fermeture manquante sur l'entrée utilisateur? Y a-t-il une erreur JavaScript?

1

Vérifiez de nouveau qu'aucune erreur ne se produit dans ajax_module. S'il y en a, il n'atteindra jamais return false et n'arrêtera pas le onsubmit.

Si vous disposez d'un débogueur Firebug ou d'un débogueur similaire, définissez des points d'arrêt au sein de ajax_module. Dans le cas contraire, ajoutez un try/catch à l'intérieur ajax_module:

function ajax_module() { 
    try { 
    /* place what you already have here */ 
    } catch (e) { 
    alert(e); 
    } 
} 

Vous avez également fait remarquer que les entrées de texte fonctionnent habituellement. Cela peut être dû au fait que les nouvelles lignes sont autorisées dans les zones de texte, que vous n'encodez pas actuellement.

Que ce soit la cause ou non, c'est probablement une bonne idée d'encoder les valeurs de toute façon.

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

Pour plus d'informations, consultez http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp.

Une alternative serait escape - cependant, notez les différences de caractères décrites sur chaque page.

Questions connexes