在javascript中从servlet获得响应后更新文本区域

Update textarea after get response from servlet in javascript

本文关键字:更新 文本 区域 响应 javascript 中从 servlet      更新时间:2023-09-26

我有一个程序,它在javascript中调用一个函数,向1个servlet发出1个请求,我想执行一个又一个请求并在每次请求后得到响应,为此我有1个函数,但它只显示所有请求执行后的结果。

function cmd(args) {
    width = 0;
    var res = args.split(''n');
    var largo = res.length;
    var progressLength = 100 / largo;
    for (var i = 0; i < largo; i++)
    {
        if (res[i] == 'desconectar')
        {
            desconectar();
            break;
        }
        else
        {
            executeCMD(res[i]);
        }
    }
}
function executeCMD(args)
{
    $.ajax({
        type: "POST",
        url: 'Controlador',
        data: {cmd: args, operacion: 1},
        success: function (response) {
            document.getElementById('respuesta').value = document.getElementById('respuesta').value + response;
        },
        dataType: 'text',
        async: false
    });
}

如果我添加 window.alert(response(; 在成功字段中,它会逐步显示进度并且工作正常,但它会显示我不想要的警报。

这是我想要 https://i.stack.imgur.com/MtaMI.jpg 但我只得到最后一张照片。

如果有人插话,解决方案是使用递归函数,如下所示:

function cmd(args) {
width = 0;
move(0);
var res = args.split(''n');
var largo = res.length;
var valInit = 0;
if (largo > valInit)
{
    executeCMD(res, valInit);
}
}

function executeCMD(args, i)
{
     $(document).ready(function () {
            $.ajax({
                type: "POST",
                url: 'ControladorServlet',
                data: {cmd: args[i], operacion: 1, ticket: ticket, iddispositivo: sesion},
                success: function (response) {
                    var textarea = document.getElementById('respuesta');
                    var res = response.trim().split(''n');
                    if(error){//dc}
                    else
                    {
                        document.getElementById('respuesta').value = document.getElementById('respuesta').value + response.trim() + "'n'n";
                        var valor = (100) * (i + 1) / args.length;
                        move(valor);
                        if (i + 1 < args.length)
                        {
                            executeCMD(args, i + 1);
                        }
                    }
                },
                dataType: 'text'
            });
        });
    }