Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在.done()ajax中的“change”事件之后运行jquery?_Php_Jquery_Ajax_Codeigniter - Fatal编程技术网

Php 如何在.done()ajax中的“change”事件之后运行jquery?

Php 如何在.done()ajax中的“change”事件之后运行jquery?,php,jquery,ajax,codeigniter,Php,Jquery,Ajax,Codeigniter,我使用的是PHP Codeigniter,jQuery2.0.3 我有一个表单包含文本框和html表格。html表中的两列是casaded下拉列表 级联下拉列表,比如下拉列表A和下拉列表B,默认情况下下拉列表A将列出10个选项,这是一个项目类别。 而下拉列表B则不列出任何内容。当A更改时,B将填充与下拉列表A及其类别相关的一些选项,并在中完成 $document.onchange,选择[name^='ast_group'],函数 下面 当我从复选框中选择一个值并单击该页面上的按钮时,它将运行一个

我使用的是PHP Codeigniter,jQuery2.0.3

我有一个表单包含文本框和html表格。html表中的两列是casaded下拉列表

级联下拉列表,比如下拉列表A和下拉列表B,默认情况下下拉列表A将列出10个选项,这是一个项目类别。 而下拉列表B则不列出任何内容。当A更改时,B将填充与下拉列表A及其类别相关的一些选项,并在中完成

$document.onchange,选择[name^='ast_group'],函数

下面

当我从复选框中选择一个值并单击该页面上的按钮时,它将运行一个JS函数 通过ajax从MySQL中提取数据并将其放入my form>input元素中, 还有HTML表。但是数据库只有下拉列表B的值,而不是下拉列表a的值

第一个JS函数运行是dialog\u purchase\u request\u pull\u datadata\u purchase\u request; 此函数中的ajax请求在成功后调用JS函数insert\u detailresult

在insert_detail函数中,一个for循环调用另一个函数add_rowtableID,data_ajax; 在这个add_row函数中,我调用ajax来获取下拉列表A的值

我已经得到了dropdown A的值,但是我错过了一些东西,所以我不能直接把它放进去。 在这一行:

我已经更改了下拉列表A的选项,并触发“更改”事件,以便下拉列表B将填充相关选项。 这是我找不到的地方:$ast_sub_group+name_cnt.valdata_ajax.item_group; 这样,它将在触发“更改”事件后更新下拉菜单B选项

这是我的JS:

我感谢你的帮助。谢谢
JMS

您是否尝试了.done方法

$.ajax({
url: "test.html",
context: document.body
}).done(function() {
$( this ).addClass( "done" );
});

这并没有直接解决这个问题,但我相信它作为一个答案比作为一个简单的评论更有价值

您的设置似乎过于复杂且不是最优的。您可以通过使用可重用组件(例如用于列表的组件)大大降低复杂性,也许还可以实现Ajax搜索功能或将列表的B数据设置为列表A更改

对于Ajax搜索,只需禁用列表B,直到在列表A中选择某个内容,然后使用适当的Ajax设置配置列表B,即使用列表A中的选定值配置URL参数

或者,您可以简单地从列表A更改事件中设置列表B的值


您尝试做的事情以前已经做过很多次了,但我认为您的方法可能不是最好的方法。

TL;me博士,我认为你应该尽量减少这个问题,不管问题是什么?dialog\u purchase\u request\u pull\u data的目的是什么?在提供的代码中永远不会调用它。另外,add_row对每个添加的行都进行Ajax调用。。出于好奇,这个代码向您发出了多少初始请求?是的,我没有输入调用dialog\u purchase\u request\u pull\u data的代码,因为它已经在运行了。我只需要找到如何使用jQuery选择下拉列表B,并在:$ast\u group+name\u cnt.valobj[0].group\u parent\u id.change;in.done方法已完成执行。是的,我执行了。这里的问题是,在.done函数中更改下拉列表A后,我错过了一些使我无法更改下拉列表B的内容。因为在.done函数中,下拉列表A已根据ajax调用和触发器.change事件设置为特定值。现在我必须将data_ajax.item_组放到下拉列表B中,下拉列表A的更改事件中填充了下拉列表B的选项。感谢您的解释和建议,我现在正试图重新构造我的编码方式,使之更简单。。而且,那些select2也不错。。非常感谢。
<script>
//populate sub group if group changed
$(document).ready(function(){   
    $(document).on("change","select[name^='ast_group']",function(){             
        var name_str = $(this).attr('id');
        var name_len = name_str.length;
        var name_cnt = name_str.substring(name_len-1,name_len); 
        $.ajax({
            url:"../asset/ajax_get_sub_group/"+$(this).val(),
            success: function(result){              
                    var detail_result = JSON.parse(result);         
                    $("select[id^='ast_sub_group"+name_cnt+"']").find('option').remove();   
                    $("select[id^='ast_sub_group"+name_cnt+"']").append("<option value='-1'>Select..</option>");
                    for (var i =0; i <detail_result.length;i++){
                        $("select[id^='ast_sub_group"+name_cnt+"']").append("<option value='"+detail_result[i].group_id+"'>"+detail_result[i].group_name+"</option>");
                    }
            }
        });     
    }); 
});
</script>
<script>
function add_row(tableID,data_ajax){
    var name_str = $('#'+tableID+' > tbody > tr:last > td:eq(1) select').attr('id');
    if(typeof(name_str)=="undefined"){
        name_str = "ast_group0";
    }
    var name_len = name_str.length; 
    var name_cnt = parseInt(name_str.substring("ast_group".length,name_len)) +  1;
    var table = document.getElementById(tableID);
    var rowCount = table.rows.length;
    //select init
    var ast_group = '<?php echo sw_CreateSelect('ast_group',$ddl_asset_group,'group_id','group_name',NULL,array('initialvalue'=>'-1','initialdisplay'=>'Select..'));?>';
    var ast_group_buffer = $(ast_group);ast_group_buffer.attr('name','ast_group[]');ast_group_buffer.attr('id','ast_group'+name_cnt);
    var ast_sub_group = '<?php echo sw_CreateSelect('ast_sub_group',$ddl_asset_sub_group,'group_id','group_name',NULL,array('initialvalue'=>'-1','initialdisplay'=>'Select..'));?>';
    var ast_sub_group_buffer = $(ast_sub_group);ast_sub_group_buffer.attr('name','ast_sub_group[]');ast_sub_group_buffer.attr('id','ast_sub_group'+name_cnt);

    var del_link = '<i class="fa fa-ban del_row"></i>&nbsp;&nbsp;';
    var newRow = 
    "<tr height='30px'>"+
        "<td align='center'>"+del_link+"<span>"+rowCount+"</span>"+"</td>"+
        "<td>"+ast_group_buffer.get(0).outerHTML+"</td>"+
        "<td>"+ast_sub_group_buffer.get(0).outerHTML+"</td>"+
        "<td><input type='text' name='ast_name[]' id='ast_name"+name_cnt+"' class='form-control' value='"+data_ajax.item_name+"'></td>"+
        "<td><input type='number' name='ast_qty[]' id='ast_qty"+name_cnt+"' class='form-control' value='"+data_ajax.item_qty+"'></td>"+
        "<td><input type='text' name='ast_price[]' id='ast_price"+name_cnt+"' class='form-control' value='"+data_ajax.item_price+"'></td>"+
        "<td><input type='text' name='sub_total[]' id='sub_total"+name_cnt+"' class='form-control' value='"+data_ajax.item_total+"'readonly></td>"+
    "</tr>";
    //select option 
    if($('#'+tableID+' > tbody > tr').length == 0){
        $('#'+tableID+' > tbody ').append(newRow);
    }else{
        $('#'+tableID+' > tbody > tr:last').after(newRow);
    }
    var ajax_result = [];
    $.ajax({
        url:"<?php echo base_url('asset/ajax_get_parent_group');?>",
        data: {ajax_group_id:data_ajax.item_group}, 
        dataType: "json"/*,
        success: function(result){          
            //return result;
            //alert(result[0].group_parent_id);
            //$("#ast_group"+name_cnt).val(result[0].group_parent_id).change(); 
        }*/
    }).done(function (obj){
        alert('group change');
        $("#ast_group"+name_cnt).val(obj[0].group_parent_id).change();
        $("#ast_sub_group"+name_cnt).val(data_ajax.item_group);
    /*}).done(function (obj){
        alert('wait group change for sub group');
        $("#ast_sub_group"+name_cnt).val(data_ajax.item_group);*/
    }); 
}

function dialog_purchase_request_pull_data(data_purchase_request){
    $("#doc_ref").val(data_purchase_request['doc_num']);
    $("#request_for").val(data_purchase_request['request_for']);
    $("#request_dept").val(data_purchase_request['request_dept']);
    $("#doc_note").val(data_purchase_request['doc_note']);
    var doc_id = data_purchase_request['doc_id'];
    var data_ajax_raw = $.ajax({
        url:"<?php echo base_url('purchase/ajax_purchase_request');?>",
        data: {purreq:doc_id},
        dataType: "json",
        success: function(result){              
            insert_detail(result);          
        }
    });     
}
function insert_detail(data){
    var tbl = document.getElementById("table_detail");
    var tbl_lastrow = tbl.rows.length -1;
    document.getElementById("table_detail").deleteRow(tbl_lastrow); //delete last row
    var data_ajax = Object();   
    for (var datum in data){
        data_ajax.item_name = data[datum].item_name;
        data_ajax.item_qty = data[datum].item_qty;
        data_ajax.item_price = data[datum].item_price;
        data_ajax.item_total = data[datum].item_total;
        data_ajax.item_group = data[datum].item_group;
        add_row('table_detail',data_ajax);
    }


    /*$("#ast_group1").val(1).change();
    $("#ast_sub_group1").val(24);

    $("#ast_group2").val(4).change();   
    $("#ast_sub_group2").val(101);*/
    addRow("table_detail"); //add empty row
}
</script>
$.ajax({
url: "test.html",
context: document.body
}).done(function() {
$( this ).addClass( "done" );
});