Возвращать переменную, которая внутри ajax [дублированная]

У этого вопроса уже есть ответ здесь:

Я ищу способ показывать один child.rows но единственной формы, которую возможно показывать, он с одним returnпрямой. тогда я сделал этот код для того, чтобы снаружи ajax он взял эту стоимость, но он не дает мне, я надеюсь, что они могут помогать мне.
КОД

        function format (data) {
         $.ajax({
           url: "list_data",
           type: 'POST', 
           data: {'data':data[0]}, 
           success: function (result){
             for (var i = result.length - 1; i >= 0; i--){ 
               var resultado =  '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
                '<tr>'+
                  '<td>Full name:result[i].nombre</td>'+
                  '<td></td>'+
                '</tr>'+
               '</table>';
             }
             return resultado;
           }
         });
        }


return результат; это, что я думаю, что он плохой, и как они видят, я нуждаюсь в том, чтобы возвратить этот код внутри for, и если я делаю return внутри for, не функционирует должно быть вне метода ajax.

$('#example tbody').on('click', 'td.details-control', function () {
    var tr = $(this).closest('tr');
    var row = table.row( tr );

    if ( row.child.isShown() ) {
        // This row is already open - close it
        row.child.hide();
        tr.removeClass('shown');
    }
    else {
        // Open this row
        row.child( format(row.data()) ).show();
        tr.addClass('shown');
    }
} );
2
задан 22.01.2017, 06:38
0 ответов

Из-за Вашей асинхронной природы, ты не можешь способствовать тому, чтобы твоя функция возвратила стоимость с success ajax; ты должен манипулировать этим внутри success.

Ты можешь делать это, например, следующей формой:

// Se agrega el parámetro "callback", que debe ser una función
function format (data, callback) {
    $.ajax({
        url: "list_data",
        type: 'POST', 
        data: {'data':data[0]}, 
        success: function (result){
            for (var i = result.length - 1; i >= 0; i--){ 
                var resultado =  '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
                    '<tr>'+
                    '<td>Full name:result[i].nombre</td>'+
                    '<td></td>'+
                    '</tr>'+
                    '</table>';
            }
            // Tras obtener tu resultado, ejecutas la función recibida
            // como parámetro, con "resultado" como argumento
            callback(resultado);
        }
    });
}

И в твоем главном коде, ты звонишь в твою функцию format так:

$('#example tbody').on('click', 'td.details-control', function () {
    var tr = $(this).closest('tr');
    var row = table.row( tr );

    if ( row.child.isShown() ) {
        // This row is already open - close it
        row.child.hide();
        tr.removeClass('shown');
    }
    else {
        // Open this row
        format(row.data(), function(resultado){
            // "resultado" contiene la cadena que necesitas retornar
            row.child(resultado).show();
            tr.addClass('shown');
        });
    }
} );
3
ответ дан 03.12.2019, 17:36
  • 1
    последний кусок кода я должен вводить это в этой функции. row.child (format (row.data ())) .show (); tr.addClass (' shown'); я отнесся к большим формам и оно я не функционирует ты знаешь depronto, которого способ? –  20.01.2017, 23:53
  • 2
    @Daniel ¿ Ты можешь издавать твой вопрос и có добавлять; я говорю, где ты называешь funció n format? ¿ Ты это называешь внутри другой funció n, o có mo? –  21.01.2017, 00:52
  • 3
    готовый я буду издавать ее –  22.01.2017, 06:37
  • 4
    @Daniel Actualicé мой ответ с формой, в которой deberí схвати называть funció n format, чтобы получать результат. –  23.01.2017, 16:15
  • 5
    Я тебе благодарен много за код функционируй хорошо, только есть pequeñ или проблема и это цикл for, который не функционирует, только приносит единственную информацию. –  23.01.2017, 17:19

Теги

Похожие вопросы