如何使用Jquery ajax将字符串数据从textarea作为参数传递给servlet?

时间:2012-08-04 04:33:58

标签: jquery ajax

我在html中有一个文本区域,用户将在其中粘贴需要输入数据库的长字符串数据(带空格)。用户将点击一个按钮上传,它将调用一个javascript函数,我在其中给出一个jquery ajax post调用。此ajax调用将该参数传递给url中提到的servlet。我不确定这里的语法,我想知道如何从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);
        }
    });
}

3 个答案:

答案 0 :(得分: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);
        }
    });
}

修改

正如Ricardo Lohmann所提到的,你也尝试将值传递给你的函数,然后尝试在函数中再次获取它。在这种情况下,您应该执行以下操作:

<强> 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);
        }
    });
}

答案 1 :(得分: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"<div> <textarea id ="string" rows = "20" cols = "120" > Please enter the data </textarea> <input type ="button" value ="upload" id="submit"/> </div>

<强> HTML

$('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);
        }
    });

});

<强> JS

{{1}}

答案 2 :(得分: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 :您要发送到服务器的其他数据,您可以在此设置一个标识符,用于发送数据。

数据:要发送到服务器的数据。

pagerequerest :发送数据的页面(aspx,php,jsp,...)。

encodedata :如果为true,则通过将所有特殊字符替换为其UTF-8转义序列来对数据进行编码。在服务器上将必须解码数据。 asp in asp:HttpUtility.UrlDecode data =(data);

piecelenght :要发送的作品的大小。 DataUploader将数据分成多个部分,然后发送到服务器。

当发送完成的数据处理完成后,它将采用以下功能:&#39;成功&#39;如果出现问题且无法完成数据发送,则会导致“错误”错误。功能

最后,服务器逐个收集数据直到完成