【问题标题】:JSON data not showing Ajax inside AjaxJSON 数据未在 Ajax 中显示 Ajax
【发布时间】:2019-06-20 12:12:02
【问题描述】:

下面的代码是关于我试图从数据库中获取数据的。第一个 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);
}

我的观点:

<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 数据,但是我在脚本中做错了什么/遗漏了什么?请帮忙...

谢谢

【问题讨论】:

  • 您是否尝试过.val().text() 而不是html(),如果是,出了什么问题?
  • 我想这会回答你的问题。 wordpress.stackexchange.com/questions/118772/…
  • @YashKaranke 试过了。但仍然无法正常工作。谢谢
  • 我看不出这里有任何堆叠 ajax 调用的原因 - 只需将 get_dclientget_lastprob 的输出合并到一个函数中......
  • 嗨,我能看看你的控制器吗,让你的生活更轻松不要发回 json,从控制器发送数据以查看在那里创建 html,然后返回到你的 ajax 响应。

标签: javascript jquery ajax codeigniter


【解决方案1】:

第二个 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){
                ...

【讨论】:

  • 感谢您的回答,在执行 Onchange 函数(第一个 Ajax)后,第一个和第二个 Ajax 都将其 var 存储为 var: clients(带 s)。还尝试添加全局变量,但仍然没有。这个堆叠的 Ajax(逻辑和方法)对吗?还有其他更好的方法吗?
【解决方案2】:

由于我是编码新手,并且刚刚了解了 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 获取数据的方式/逻辑在性能上是好的。如果有人有其他更好的方法,请分享..谢谢

【讨论】:

    猜你喜欢
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2012-04-20
    • 2013-11-15
    • 1970-01-01
    • 2014-07-17
    相关资源
    最近更新 更多