11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Alors classiquement ce que je veux faire est tout simple.
Modifier le contenu d'un input type=text en js.
Alors ceci marche trés bien :

function addRequest()
{
document.getElementById('newrequest').value = "yop";
}


<form name="sendata" METHOD=POST ACTION="./lui-meme.php">
<input type='text' id='newrequest' size='60' value=''></input>
<input type='reset' value='Add' class='basic_button2' onClick=addRequest()>

</form>

Facile n'est ce pas?
Mais le soucis c'est que j'ai d'autres trucs dans la fonction...

 
function addRequest()
		{														
		var newR = document.getElementById('newrequest').value;
		var reg = /^[a-zA-Z0-9\"\'\)\(\-\,\&\s\/\.]+$/i;
		if(reg.test(newR) && newR.length<767)
			{
			var savR=newR+'£request';
                        http_request(savR,'cgi-bin/yop.pl');
                        var reg = /\#/i;
			var breg = /^[0-9]+$/i;
			if(reg.test(http_reply))
				{																
				}
			else
				{
				http_request(newR,'cgi-bin/zeb.pl');
		                var creg = /^[0-9]/i;
				if(creg.test(http_reply))
					{															
					}
				else
					{
					http_reply=http_reply.replace(/\[Title\/Abstract\]/g,"");
                                        http_reply=http_reply.replace(/\&quot;/g,"\"");
					var tableau = http_reply.split('=');
                                        document.getElementById('newrequest').value = "yop";	
					}
				}
			}

		}


Ala beh la ça marche pas! Smiley bawling Smiley bawling Smiley bawling Smiley bawling Smiley bawling
Bon j'ai bien dans l'idée que c'est l'ajax qui influence tout ça mais je sais pas comment.
En fait, ce qu'il me fait c'est qu'il me remet la valeur initiale de l'input.
C'est à dire que si je mets ça :
<input type='text' id='newrequest' size='60' value='blabla'>
Il me remet blabla au lieu de yop...

Pffffffffff, c'est pénible. Smiley confus

Modifié par Le jong le plus lour (30 Jan 2008 - 12:01)
Salut,

Le jong le plus lour a écrit :

<form name="sendata" METHOD=POST ACTION="./lui-meme.php">


Eviter d'ecrire les attributs en majuscules (ou choisir majuscule ou minuscule mais pas les deux mélangés), mettre des guillemets autour des valeurs d'attributs et quand un formulaire est envoyé vers la page courante, pas besoin de mettre d'attributs action puisque c'est implicite.

Sinon pour ton problème je n'ai pas lu le reste car ce serait sympa si tu mettais ton code entre des balises code pour pouvoir le lire plus facilement.
Ayé!
Vé corriger ce que tu m'as dit déjà pour voir ce que ça donne.
Merci

edit : c'est fait, bien évidemment ça n'a rien changé à mon soucis, mais c'est plus propre.
Modifié par Le jong le plus lour (29 Jan 2008 - 17:21)
En fait, je viens de tester et même sans les balises form j'ai le même soucis! Smiley bawling

Je pense que ça viens du httprequest... Smiley ohwell
Modifié par Le jong le plus lour (29 Jan 2008 - 18:42)
franchement je suis pas expert en ajax mais où se trouve la fonction handler. celle qui traite la réponse de la requete http_request. et qui est sensé etre incluse dans le code de la page appelante. (meme si c'est un fichier.js externe )

parce que quoi que fasse ta requete ajax ça se passe sur une autre page.

ici un cgi-bin soit.

mais ça reste douteux.

quand on voit une erreur comme ça on peut que se demander si

document.getElementById('newrequest').value = "yop";

est executé ou non.

déjà c'est dans plein de if. tu as debuggé avec des messages d'alert pour voir?

un formulaire sans balise form.....oublie c'est pas un test ça c'est du sabotage Smiley confus Smiley cligne Smiley biggrin
Modifié par CPascal (30 Jan 2008 - 10:56)
Tu as raison il manque ceci :

function http_request(data,script)
		{
                xhr_object = null; 
                if(window.XMLHttpRequest) 
			{
			xhr_object = new XMLHttpRequest(); 
			 if (xhr_object.overrideMimeType)
			 	{
                                xhr_object.overrideMimeType('text/xml');
                                 }
                        }
		else if(window.ActiveXObject)
			{
			try 
                                 {
                                 xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
                                 }
                        catch (e)
                                 {
                                 try
                                            {
                                             xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                                             }
                                catch (e) {}
                                }
                        }
		else 
			{ 
			alert("Your navigator does not support XMLHTTPRequest..."); 
			return; 
			}
        xhr_object.open('GET', 'http://chez.moi/'+script+'?'+data, false);
        xhr_object.onreadystatechange = function() { alertContents(xhr_object); };
        xhr_object.send(null);
		}
	




	function alertContents(xhr_object) {
                     if (xhr_object.readyState == 4) {
                              if (xhr_object.status == 200) {
                                        http_reply = String(xhr_object.responseText);
                                          } 
                              else {
                                        alert('Problem with the XHRobject request.');
                                          }
                               }
                     }



Pour ce qui est des if y a pas de problème les tests sont bons.
Le http_reply est ok également, la liaison se fait bien et le résultat retourné est bon.
Je vois pas quoi faire d'autre...
Modifié par Le jong le plus lour (30 Jan 2008 - 11:12)
ah oui mais tu es sur un input de type reset.

a écrit :
<input type='reset' value='Add' class='basic_button2' onClick=addRequest()>




tu as essayé la même avec un bouton submit ou un bouton image sans type particulier si tu veux pas submit.

parceque rétablir la valeur initiale c'est le rôle même des input type='reset'.

donc là je suspecte plus le HTML et apache ( ou IIS ) que ajax de passer en dernier et de rétablir l'affichage.
Modifié par CPascal (30 Jan 2008 - 11:16)
Pas con du tout!
Smiley smile

Donc j'ai testé avec le submit et avec une image.
Ca donne le même résultat, c'est à dire qu'il valide et envoie le formulaire global au lieu de simplement faire ce que je lui dis dans la fonction.

Donc c'est pas bon pour moi car j'ai un autre bouton qui a ce rôle de validation du formulaire et qui fonctionne bien.

Le bouton AddRequest sert lui a ajouter une ligne dans un tableau.
Argggggggg! Smiley fache
bon alors voila que faire dans ce cas. ( du moins j'espere )

onClick=addRequest() devient onClick="return addRequest();"

et la fonction addRequest() a la fin de sa petite vie elle retourne FALSE.

ce qui devrait annuler le fonctionnement normal.

edit: sinon tu fais du bouton un lien avec un href='javascript:void%200'
Modifié par CPascal (30 Jan 2008 - 11:50)
Trop foooooooorrrrrrrrt!! Smiley cligne

La pirouette magique qui guérit tous tes maux de tête!

Rha merci beaucoup! Ca marche nickel chrome!

Je peux mettre résolu même si on n'a pas trouvé exactement d'ou venait le problème?