2010-09-29 71 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

相關問題