Данные JSON не показывают Ajax внутри Ajax - PullRequest
0 голосов
/ 27 января 2019

код ниже о том, что я пытаюсь получить данные из базы данных. Первый Ajax показывает данные успешно, а второй (запрос Ajax внутри первого Ajax) ничего не показывает.

Более подробное объяснение:

  1. Первый Ajax запрашивает данные у onchange (работает)
  2. Второй (внутри функции успеха) запрашивает другие данные, но никогда не доставляется в представление

    $(document).ready(function(){
    
    $('#idclient').change(function(){
        var client=$(this).val();
        $.ajax({
            url : "<?php echo base_url();?>Skejuler/get_dclient",
            method : "POST",
            data : {clients: client},
            async : false,
            dataType : 'json',
            success: function(data){
                console.log(data);
    
    $.ajax({
        url: '<?php echo base_url() ?>Skejuler/get_lastprob',
        method : "POST",
        data : {clients: client},
        async: false,
        dataType: 'json',
        success: function(data){
            console.log(data);
            var dbkosong = 'Belum ada problem';
            var DLP = '';
            var i;
            for(i=0; i<data.length; i++){
                DLP += data[i].catprobc+' : '+data[i].action+' oleh '+data[i].hero+' pada '+data[i].created_at; //**is this line any wrong?**
            }
            if (!data) { $('.showLP').html(dbkosong); }
            else { $('.showLP').html(DLP); }
            },
            error: function(){
            alert('Database kosong!');
            }
    });
    
                var html = '';
                var i;
                for(i=0; i<data.length; i++){
                    html += '<div class="box-body table-responsive no-padding">'+
                    '<table class="table table-hover">'+
                    '<tr>'+
                    '<th>ID</th>'+
                    '<th>'+data[i].client+'</th>'+
                    '</tr>'+
                    '<tr>'+
                    '<td>MONITORING</td>'+
                    '<td>'+data[i].moni+'</td>'+
                    '</tr>'+
                    '<tr>'+
                    '<td>IPPBX</td>'+
                    '<td>'+data[i].ippbx+'</td>'+
                    '</tr>'+
                    '<tr>'+
                    '<td>DATABASE</td>'+
                    '<td>'+data[i].ipdb+'</td>'+
                    '</tr>'+
                    '<tr>'+
                    '<td>MULTIMEDIA</td>'+
                    '<td>'+data[i].ipmm+'</td>'+
                    '</tr>'+
                    '<tr>'+
                    '<td>RECORDING</td>'+
                    '<td>'+data[i].iprec+'</td>'+
                    '</tr>'+
                    '<tr>'+
                    '<td>FXO</td>'+
                    '<td>'+data[i].ipfxo+'</td>'+
                    '</tr>'+
                    '<tr>'+
                    '<td>VM</td>'+
                    '<td>'+data[i].ipvm+'</td>'+
                    '</tr>'+
                    '<tr>'+
                    '<td>LOKASI ACD</td>'+
                    '<td>'+data[i].acd+'</td>'+
                    '</tr>'+
                    '<tr>'+
                    '<td>CALL CENTER</td>'+
                    '<td>'+data[i].callcenter+'</td>'+
                    '</tr>'+
                    '<tr>'+
                    '<td>PROB TERAKHIR</td>'+
                    '<td><span class="showLP"></span></td>'+ //**Here I'm trying to show the data from database by attr CLASS: showLP, but nothing**
                    '</tr>'+
                    '<tr>'+
                    '<td>STAT</td>'+
                    '<td>'+data[i].stat+'</td>'+
                    '</tr>'+
                    '</table></div>'
                    ;
                }
                $('.cclient').html(html);
    
            }
        });
    });
    
    });
    

Мой контроллер:

    function get_lastprob(){
    $client=$this->input->post('clients');
    $result=$this->skejuler_m->get_lastprob($client);
    echo json_encode($result);
}

function get_dclient(){
    $client=$this->input->post('clients');
    $result=$this->skejuler_m->get_dclient($client);
    echo json_encode($result);
}

My View:

<select name="nameclient" id="idclient" class="form-control">
                        <?php $issetotslm = $_REQUEST["nameclient"]; ?>
                        <option value="" selected="selected">^^CLIENT^^</option>
                        <?php foreach($clients as $row) { echo '<option value="'.$row->client.'">'.$row->client.'</option>'; } ?>
                    </select>

Я могу увидеть данные JSON, проверив их в браузере, но что я делаю неправильно / отсутствует в скрипте? Пожалуйста, помогите ...

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 января 2019

, поскольку я новичок в кодировании и только что узнал о том, как async: false работает, я просто раскомментировал его для второго Ajax.И это работает!

Вот обновление на втором Ajax (внутри):

$.ajax({
url: '<?php echo base_url() ?>Skejuler/get_lastprob',
method : "POST",
data : {clients: client},
//async: false,
dataType: 'json',
success: function(data){
    var dbkosong = 'Belum ada problem';
    var DLP = '';
    var i;
    for(i=0; i<data.length; i++){
        DLP += data[i].catprob+' : '+data[i].action+' oleh '+data[i].hero+' pada '+data[i].created_at;
    }
    if (!data) { $('.showLP').html(dbkosong); }
    else { $('.showLP').html(DLP); }
    },
    error: function(){
    alert('Database kosong!');
    }
});

Но мне нужно знать, что способ / логика, которую я получаю данными с помощью сложенного Ajax,хорошо в исполнении.Если у кого-то есть другой способ получше, поделитесь им .. Спасибо

0 голосов
/ 27 января 2019

Второй ajax никогда не получал var client, потому что его область действия заканчивалась при первом вызове ajax и исправлял необходимость сделать его глобальным var:

var client;

$(document).ready(function(){

$('#idclient').change(function(){
    client=$(this).val();
    $.ajax({
        url : "<?php echo base_url();?>Skejuler/get_dclient",
        method : "POST",
        data : {clients: client},
        async : false,
        dataType : 'json',
        success: function(data){
            console.log(data);
            $.ajax({
                url: '<?php echo base_url() ?>Skejuler/get_lastprob',
                method : "POST",
                data : {clients: client},
                async: false,
                dataType: 'json',
                success: function(data){
                ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...