1

我在 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);
        }
    });
}
4

3 回答 3

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);
        }
    });
}
于 2012-08-04T04:37:08.130 回答
2

您正在使用jQuery,所以请不要将您的事件直接放在html.

第一UploadResult(getElementById('string'.val());应该UploadResult(document.getElementById('string').value); // missing ')'

第二:您正在传递 textarea 的值,但在您的函数上又得到了它。

第三:您将错误的数据传递给 ajax。data: "elementValue"应该data: { 'elementValue': elementValue}

第四:当你通过dataajax时你不需要?在设置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);
        }
    });

});
于 2012-08-04T04:47:30.613 回答
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:您要发送到服务器的附加数据,在这里您可以设置一个标识符来发送什么数据。

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

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

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

piecelenght : 要发送的件的大小。DataUploader 将数据分成几部分,然后发送到服务器。

当发送这个的数据处理完成时,它会接受函数:'success'。如果出现问题并且无法完成数据发送,则会导致“错误”功能。

最后服务器一块一块地收集数据,直到完成

于 2015-04-01T15:43:12.243 回答