/ / Как да предавам низ данни от текста като параметър на сървлет с Jquery ajax? - jquery, ajax

Как да прехвърляте низови данни от текста като параметър на сървлет чрез Jquery ajax? - jquery, ajax

Имам текстова област в html, в която потребителят щепоставете дълъг набор от данни (с интервали), които трябва да бъдат въведени в базата данни. Потребителят ще кликне върху бутон за качване, който ще се обади на javascript функция, в която аз съм дава jquery ajax пост разговор. Това повикване ajax ще премине този параметър към сървета, който е посочен в URL адреса. Не съм сигурен за синтаксиса тук, искам да знам как да предам данни от html textarea като входен параметър.

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 за отговор № 1

Имате цитати около променливата си. Ако премахнете котировките и предполагам, че вашият сървър очаква да е така, трябва да форматирате данните като такива.

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 за отговор № 2

Вие използвате jQuery, така че, моля, не направете събитието директно на html.

първи: UploadResult(getElementById("string".val()); би трябвало UploadResult(document.getElementById("string").value); // missing ")".

втори: Вие предавате стойността на textarea, но по вашата функция ще я получите отново.

трета: Предавате грешни данни на Ajax. data: "elementValue" би трябвало data: { "elementValue": elementValue}

четвърти: Когато минавате data докато не се налага да използвате ? когато е настроено a 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 за отговор № 3

Може би можете да използвате тази 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>

След като Initialize DataUploader

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

допълнителен: Допълнителни данни, които искате да изпратите на сървъра, тук можете да зададете един идентификатор кои данни изпращат.

данни: Данни за изпращане до сървъра.

pagerequerest: Страница за изпращане на данните (aspx, php, jsp, ...).

encodedata: Ако е вярно, то кодира данните, като замени всички специални знаци с техните UTF-8 аварийни последователности. На сървъра ще трябва да декодира данните. EG в aspx: HttpUtility.UrlDecode data = (данни);

piecelenght: Размер на парчетата за изпращане. DataUploader разделя данните на парчета, след което изпраща на сървъра.

Когато процесът на изпращане на данните завърши, процесът ще отнеме функцията: "успех". Ако имаше проблем и не можа да завърши изпращането на данни, това ще доведе до функцията "грешка".

Накрая сървърът събира данните по парче, докато бъде завършено