【问题标题】:Data send in json is change while send itjson中发送的数据在发送时发生变化
【发布时间】:2018-07-16 05:51:18
【问题描述】:
$.ajax({
                type : 'POST',
                url  : '<?=site_url("aplikasi_tambah_merchant/input_merchant/get_mdr_master");?>',
                data : 'kode='+arr_value[0],
                beforeSend:function(){
                    $('#ajax-loader').show();
                },
                error: function(){
                    $('#ajax-loader').hide();
                    alert('Error\nGagal request data');
                },
                success: function(data){
                    var res = JSON.parse(data);
                    datamdr = Number(res.mdr_debit);
                    $('#ajax-loader').hide();
                    }
                });

                $.ajax({
                    type : 'POST',
                    url  : '<?=site_url("pameran/update_mdr_pameran");?>',
                    data : 'datamdr='+datamdr+'&app_id='+app_id+'&on_off=2',
                    beforeSend:function(){
                        $('#ajax-loader').show();
                    },
                    error: function(){
                        $('#ajax-loader').hide();
                        alert('Error\nGagal request data');
                    },
                    success: function(data){
                        alert("tes "+datamdr);
                        alert("balik "+data);
                        $('#ajax-loader').hide();
                        }
                    });

这是发送我的数据的 ajax 代码。 第一个 ajax 是获取 datamdr = Number(res.mdr_debit); 的值,然后我将 datamdr 值再次发送到控制器,但在控制器中

public function update_mdr_pameran() {
        $this->config->set_item('compress_output', FALSE);
        $datamdr = trim($this->input->post('datamdr'));
        $app_id = trim($this->input->post('app_id'));
        $on_off = trim($this->input->post('on_off'));

        $out = $this->aplikasi_model->update_mdr_app_id_onoff($datamdr, $app_id, $on_off);

        echo json_encode($datamdr);
    }

那些 datamdr 值是未定义的,而其他 2 个变量仍然可以作为字符串读取?这怎么可能?我已经尝试将第一个 json 解析为 string 和 int 但仍然没有运气再次发送数据

【问题讨论】:

  • 您是否正确获取其他值。例如,app_idon_off 等。
  • 是的,这两个值被正确发送并在我尝试查看该值时返回一个值。我也检查过我没有冲突变量。

标签: php json ajax codeigniter


【解决方案1】:

默认情况下,Ajax 以异步方式工作,所以发生的情况是,您的两个请求同时执行,并且在那个时刻,您在第一次 ajax 调用完成时设置的值仍未定义。

您应该将您的第二个 ajax 调用包装在一个函数中,并在您的第一个 ajax 调用中从 success 处理程序调用它。

或者您将两个请求合并为一个,因为它们似乎以任何方式发送到同一台服务器。

第三种选择是使 ajax 调用同步,但这会阻止脚本的执行,所以我不建议这样做。

【讨论】:

  • 是的,它解决了问题,我在第一个成功的情况下移动了我的第二个 ajax,它可以工作
【解决方案2】:

@jeroen 的建议是这样的:

$.ajax({
    type : 'POST',
    url  : '<?=site_url("aplikasi_tambah_merchant/input_merchant/get_mdr_master");?>',
    data : 'kode='+arr_value[0],
    beforeSend:function(){
        $('#ajax-loader').show();
    },
    error: function(){
        $('#ajax-loader').hide();
        alert('Error\nGagal request data');
    },
    success: function(data){
        var res = JSON.parse(data);
        datamdr = Number(res.mdr_debit);
        $('#ajax-loader').hide();

        update_mdr_pameran();
    }
});

function update_mdr_pameran(){
    $.ajax({
        type : 'POST',
        url  : '<?=site_url("pameran/update_mdr_pameran");?>',
        data : 'datamdr='+datamdr+'&app_id='+app_id+'&on_off=2',
        beforeSend:function(){
            $('#ajax-loader').show();
        },
        error: function(){
            $('#ajax-loader').hide();
            alert('Error\nGagal request data');
        },
        success: function(data){
            alert("tes "+datamdr);
            alert("balik "+data);
            $('#ajax-loader').hide();
            }
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 2021-05-23
    • 2015-12-07
    • 1970-01-01
    • 2014-02-10
    • 2020-08-25
    相关资源
    最近更新 更多