2010-09-29 22 views
1

J'ai une zone de texte avec l'ID kTb. Lorsque je clique sur le bouton après avoir entré une valeur dans la zone de texte, le changement ci-dessous est appelé dans un javascript ('onClick = "changeV (kTb.value)"'). Le 'alert (str)' me donne la valeur que j'ai entré dans la zone de texte mais quand je la passe 'urll = "uSetENV.cgi? KullaTest = str"', je ne reçois pas la valeur entrée, c'est juste str. Pourriez-vous s'il vous plaît laissez-moi savoir comment passer/obtenir la valeur entrée, veuillez me faire savoir si je ne suis pas clair, merci.Comment envoyer une valeur de zone de texte à un script CGI

============================================== ====================================

changeV fonction

(str)

{

alert("starting change value"); 
alert(str); 
urll = "uSetENV.cgi?kullaTest=str"; 
var reqq 

//fw_setenv kullaTest str; 
    if (window.XMLHttpRequest) { 
    reqq = new XMLHttpRequest(); 
    reqq.open("GET", urll, true); 
    reqq.setRequestHeader("If-Modified-Since", 
       "Sat, 1 Jan 2000 00:00:00 GMT"); 
    reqq.send(null); 
// branch for IE/Windows ActiveX version 
} else if (window.ActiveXObject) { 
    reqq = new ActiveXObject("Microsoft.XMLHTTP"); 
    if (reqq) { 
     reqq.open("GET", urll, true); 
      reqq.setRequestHeader("If-Modified-Since", 
       "Sat, 1 Jan 2000 00:00:00 GMT"); 
     reqq.send(); 
    } 
} 
alert("done change value"); 

}

Répondre

1

JavaScript ne dispose pas d'un symbole pour indiquer une variable (à savoir foo est une variable et n'a pas besoin d'être nommé $foo), de sorte que vous ne pouvez pas effectuer une interpolation de variables dans les chaînes. Vous devez construire votre chaîne explicitement.

Vous devez également gérer les caractères ayant une signification particulière dans les URI utilisant encodeURIComponent.

urll = "uSetENV.cgi?kullaTest=" + encodeURIComponent(str); 
+0

Un grand merci David Dorward, ça marche pour moi. – chella

1

utilisez jQuery - http://api.jquery.com/jQuery.post/

Et utiliser POST, pas G ET.

alert("starting change value"); 
alert(str); 
$.post('uSetENV.cgi', {'kullaTest': str}, function(data) { 
    str = data; 
    alert("done change value"); 
    alert(str); 
}); 

alert('Here str is still not changed because AJAX requests are asynchronous'); 
+0

Pourquoi utiliser POST? Je ne vois rien dans la question qui suggère que c'est une opération non-idempotente. – Quentin

+1

Plus je dépense sur Stack Overflow, plus j'apprécie que "use jQuery" est vraiment une réponse appropriée à la plupart "comment faire X en JavaScript?" des questions. –

+0

Merci 'comment'. Je suis nouveau à JS et je suis sûr que votre réponse m'aidera à long terme, mais à partir de maintenant, je vais avec la réponse de David Dorward. Merci encore pour votre réponse. – chella