2010-09-29 69 views
1

我有一个ID为kTb的文本框。当我在文本框中输入一些值后点击按钮时,下面的changeV(str)在javascript内调用('onClick =“changeV(kTb.value)”')。 'alert(str)'给了我在文本框中输入的值,但是当我通过'urll ='uSetENV.cgi?kullaTest = str''时,我没有得到输入值,它只是str。请让我知道如何通过/得到输入的值,如果我不清楚,请告诉我,谢谢。如何将文本框值发送到CGI脚本

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

功能changeV(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"); 

}

回答

1

JavaScript没有一个符号来指示变量(即foo是一个变量,并不需要被命名为$foo),所以你不能在字符串中进行变量的插值。你必须明确地建立你的字符串。

您还应该使用encodeURIComponent处理URI中具有特殊含义的字符。

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

非常感谢David Dorward,它正在为我工​​作。 – chella 2010-09-29 18:59:08

1

使用jQuery - http://api.jquery.com/jQuery.post/

而且使用POST,不是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

为什么使用POST?我在这个问题上没有看到任何暗示它是非幂等性操作的问题。 – Quentin 2010-09-29 18:18:08

+1

我花费在堆栈溢出上的时间越长,我越欣赏“使用jQuery”对大多数人来说真的是一个合适的答案“我该如何在JavaScript中执行X操作?”的问题。 – 2010-09-29 18:20:25

+0

谢谢'如何'。我对JS很陌生,我相信你的答案能够长期帮助我,但是到目前为止,我正在与David Dorward的答案一致。再次感谢您的回答。 – chella 2010-09-29 18:58:03

相关问题