2012-08-04 24 views
1

我在html中有一個文本區域,用戶將粘貼一長串需要輸入到數據庫中的數據(包含空格)。用戶將點擊一個按鈕上傳,這將調用一個JavaScript函數,我正在給它一個jQuery Ajax後調用。這個ajax調用會將該參數傳遞給url中提到的servlet。我不確定這裏的語法,我想知道如何將html textarea中的數據作爲輸入參數傳遞。如何將字符串數據從textarea作爲參數傳遞給使用Jquery ajax的servlet?

HTML

<textarea id = "string" rows = "20" cols = "120" > Please enter the data </textarea> 
<input type = "button" value = "upload" onclick= "UploadResult(getElementById('string'.val());" /> 

的Javascript

function UploadResult() 
{ 
    var elementValue = $("#string").val(); 

    $.ajax({ 
     type: "POST", 
     url: "servleturl.irpt?", 
     data: "elementValue", 
     success: function(msg){ 
      alert("Data Saved: " + msg); 
      alert(elementValue); 
     } 
    }); 
} 

回答

2

您對您的變量的報價。如果你刪除了引號,並且我假設你的服務器正在等待json,所以你需要格式化數據。

function UploadResult() 
{ 
    var elementValue = $("#string").val(); 

    $.ajax({ 
     type: "POST", 
     url: "servleturl.irpt", 
     //data: "elementValue", 
     data: { 
      'variableNameExpectedByServer': elementValue 
     }, 
     success: function(msg){ 
      alert("Data Saved: " + msg); 
      alert(elementValue); 
     } 
    }); 
} 

編輯

正如裏卡多羅曼提到的,你也試圖值傳遞給你的函數,但然後嘗試在函數中再次得到它。在這種情況下,你應該做到以下幾點:

HTML

<input type="button" value="upload" 
    onclick="UploadResult(document.getElementByID('string').value);" /> 

的Javascript

function UploadResult(result) 
{ 
    $.ajax({ 
     type: "POST", 
     url: "servleturl.irpt", 
     data: { 
      'variableNameExpectedByServer': result 
     }, 
     success: function(msg){ 
      alert("Data Saved: " + msg); 
      alert(elementValue); 
     } 
    }); 
} 
2

您使用jQuery,所以請不要直接把你的事件在html

第一個UploadResult(getElementById('string'.val());應該是UploadResult(document.getElementById('string').value); // missing ')'

第二:你正在傳遞textarea的值,但在你的函數中,你再次得到它。

第三個:您將錯誤的數據傳遞給ajax。data: "elementValue"應該data: { 'elementValue': elementValue}

:當你通過data thrue AJAX你沒有設置url時需要使用?,所以url: "servleturl.irpt?"應該url: "servleturl.irpt"

HTML

<div> 
    <textarea id ="string" rows = "20" cols = "120" > Please enter the data </textarea> 
    <input type ="button" value ="upload" id="submit"/> 
</div> 

個JS

$('div').on('click', '#submit', function() { 

    var elementValue = $("#string").val(); 

    $.ajax({ 
     type: "POST", 
     url: "servleturl.irpt", 
     data: { 
      'elementValue': elementValue 
     }, 
     success: function(msg) { 
      alert("Data Saved: " + msg); 
      alert(elementValue); 
     } 
    }); 

}); 
+0

+1我錯過了他的第一個錯誤昨晚,當我第一次看它。接得好! – 2012-08-04 12:51:38

+0

但是,你沒有注意到他在第一個錯誤中混合了jQuery和javascript。而不是UploadResult(getElementById('string')。val());'最終結果應該是 'UploadResult(document.getElementByID('string')。value);' – 2012-08-04 13:03:00

+0

謝謝!!!!! – raj44 2012-08-06 04:13:03

0

也許你可以使用這個jQuery插件:

https://www.articlage.com/adrianillo/article/DataUploader

,你可以輕鬆地上傳大量的文本。

首先從下載腳本:https://github.com/adrianillo/datauploader

到jQuery和DataUploader腳本添加引用

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
<script src="js/ajaxdatauploader.js"></script> 

後初始化DataUploader

jQuery.ajaxdatauploader(
{ 
    additional:, 
    data:, 
    pagerequest:, 
    piecelenght:, 
    encodedata:, 
    success: function (datauploader, status){ 
    } 
    error: function (req, status, error) {    
    } 
    } 
); 

aditional的:要附加數據發送到服務器,在這裏你可以設置一個標識符sendi的數據NG。

數據:要發送到服務器的數據。

pagerequerest:Page發送數據(aspx,php,jsp,...)。

encodedata:如果爲true,則它通過用UTF-8轉義序列替換所有特殊字符來編碼數據。在服務器上將不得不解碼數據。在aspx中的EG:HttpUtility.UrlDecode data =(data);

piecelenght:要發送的作品的大小。 DataUploader會將數據分成幾塊,然後發送到服務器。

當發送數據的過程完成時,它將採用函數'success'。如果出現問題並且無法完成數據發送,則會導致「錯誤」功能。

最後,服務器一塊收集的數據分片,直到它完成

相關問題