Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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
Javascript 如果只有一个,它就会再次失败。我已经将函数更新为具有参数,然后将要更新的字段作为参数传递给函数。我用这个新代码编辑了这些问题。有什么想法吗?我不太清楚你的新要求是什么。表格和字段如何相互关联?我强烈建议你发布一个关于这个的新问题,可能是一个简单的工作sta_Javascript_Python_Jquery_Wtforms - Fatal编程技术网

Javascript 如果只有一个,它就会再次失败。我已经将函数更新为具有参数,然后将要更新的字段作为参数传递给函数。我用这个新代码编辑了这些问题。有什么想法吗?我不太清楚你的新要求是什么。表格和字段如何相互关联?我强烈建议你发布一个关于这个的新问题,可能是一个简单的工作sta

Javascript 如果只有一个,它就会再次失败。我已经将函数更新为具有参数,然后将要更新的字段作为参数传递给函数。我用这个新代码编辑了这些问题。有什么想法吗?我不太清楚你的新要求是什么。表格和字段如何相互关联?我强烈建议你发布一个关于这个的新问题,可能是一个简单的工作sta,javascript,python,jquery,wtforms,Javascript,Python,Jquery,Wtforms,如果只有一个,它就会再次失败。我已经将函数更新为具有参数,然后将要更新的字段作为参数传递给函数。我用这个新代码编辑了这些问题。有什么想法吗?我不太清楚你的新要求是什么。表格和字段如何相互关联?我强烈建议你发布一个关于这个的新问题,可能是一个简单的工作stackblitz。无论如何,你的语法还是不正确的。您正在updateFields()上定义两个参数:表和字段。但是你根本没有在函数体中使用它们。第一次这样调用函数时:updateFields(table,field)。您试图传递给函数的这两个参数


如果只有一个,它就会再次失败。我已经将函数更新为具有参数,然后将要更新的字段作为参数传递给函数。我用这个新代码编辑了这些问题。有什么想法吗?我不太清楚你的新要求是什么。
表格
字段
如何相互关联?我强烈建议你发布一个关于这个的新问题,可能是一个简单的工作stackblitz。无论如何,你的语法还是不正确的。您正在
updateFields()
上定义两个参数:
字段
。但是你根本没有在函数体中使用它们。第一次这样调用函数时:
updateFields(table,field)
。您试图传递给函数的这两个参数是在哪里定义的?也许我得到了,请参阅更新的答案。@Ibsn,是的,这就是我试图做的。多谢!后续问题-由于用户尚未在表单中输入任何内容,对updateFields()的第一次调用是否会以零更新字段?
class QaForm(FlaskForm):
test_table_in = StringField('Test Table', validators=[DataRequired()], id= 'test_table')
test_join_key = SelectMultipleField("Select Test Fields to Join on", choices=[], coerce=str, id = 'select_test_join_key')
@app.route('/', methods = ['GET', 'POST'])
@app.route('/home', methods = ['GET', 'POST'])
def home():
    form = QaForm()

    fields_query = f"""select column_name AS Fields from information_schema.columns group by 1;"""
    conn.execute(fields_query)
    result = conn.fetchall()
    select_choices = [(column, column) for column in result]

    form.test_join_key.choices = select_choices
@app.route('/_get_fields/<table>')
def _get_fields(table):
    table = request.args.get(table, type=str)
    fields_query = f"""select column_name AS Fields from information_schema.columns WHERE table_name = '{table}' group by 1;"""
    conn.execute(fields_query)
    result = conn.fetchall()
    select_choices = [(column, column) for column in result]
return jsonify(select_choices)
<script charset="utf-8" type="text/javascript">
         $function() {
            var dropdown = {
                test_table: $('#test_table')
                test_join_key: $('#select_test_join_key')
            }
            updateFields();

            function updateFields() {
                var send = {
                    test_table: dropdown.test_table.val()
                };
                dropdown.test_join_key.attr('disabled', 'disabled');
                dropdown.test_join_key.empty();
                $.getJSON("{{url_for('_get_fields') }}", send, function(data) {
                    data.forEach(function(item) {
                        dropdown.test_join_key.append(
                            $('<option>', {
                                value: item[0],
                                text: item[1]
                            })
                        );
                    });
                    dropdown.test_join_key.removeAttr('disabled');
                });
            }
            dropdown.test_table.on('change', function() {
                updateFields();
            });
         });
     </script>
<script charset="utf-8" type="text/javascript">
         $(function() {
            var tables = {
                test_table: $('#test_table'),
                prod_table: $('#prod_table')
            };

            var fields = {
                test_join_key: $('#select_test_join_key'),
                prod_join_key: $('#select_prod_join_key'),
                test_dimensions: $('#select_test_dimensions'),
                prod_dimensions: $('#select_prod_dimensions'),
                test_measures: $('#select_test_measures'),
                prod_measures: $('#select_prod_measures')
            };
            updateFields(table, field);

            function updateFields(table, field) {
                var send = {
                    table: tables.table.val()
                };
                fields.field.attr('disabled', 'disabled');
                fields.field.empty();
                $.getJSON("{{url_for('_get_fields') }}", send, function(data) {
                    data.forEach(function(item) {
                        fields.field.append(
                            $('<option>', {
                                value: item[1],
                                text: item[0]
                            })
                        );
                    });
                    fields.field.removeAttr('disabled');
                });
            }
            tables.test_table.on('change', function() {
                updateFields(tables.test_table, fields.test_join_key);
                updateFields(tables.test_table, fields.test_dimensions);
                updateFields(tables.test_table, fields.test_measures);
            });
            tables.prod_table.on('change', function() {
                updateFields(tables.prod_table, fields.prod_join_key);
                updateFields(tables.prod_table, fields.prod_dimensions);
                updateFields(tables.prod_table, fields.prod_measures);
            });
         });
<script charset="utf-8" type="text/javascript">
     $(function(){
         var dropdown = {
             test_table: $('#test_table'),
             test_join_key: $('#select_test_join_key')
         }
         updateFields();
    
         function updateFields() {
             var send = {
                test_table: dropdown.test_table.val()
             };
             dropdown.test_join_key.attr('disabled', 'disabled');
             dropdown.test_join_key.empty();
             $.getJSON("{{url_for('_get_fields') }}", send, function(data) {
                  data.forEach(function(item) {
                     dropdown.test_join_key.append(
                         $('<option>', {
                             value: item[0],
                             text: item[1]
                          })
                      );
                  });
                  dropdown.test_join_key.removeAttr('disabled');
             });
         }
         dropdown.test_table.on('change', function() {
             updateFields();
         });
   });
$(function () {
    var tables = {
        test_table: $('#test_table'),
        prod_table: $('#prod_table')
    };

    // I'm organizing fields in two arrays, test and prod, for simplyfing iterate over each group
    var fields = {
        test: [$('#select_test_join_key'), $('#select_test_dimensions'), $('#select_test_measures')],
        prod: [$('#select_prod_join_key'), $('#select_prod_dimensions'), $('#select_prod_measures')]
    };

    // This is for updating fields the first time
    fields.test.forEach(item => updateFields(tables.test_table, item));
    fields.prod.forEach(item => updateFields(tables.prod_table, item));

    function updateFields(table, field) {
        var send = {
            table: table.val()
        };
        field.attr('disabled', 'disabled');
        field.empty();
        $.getJSON("{{url_for('_get_fields') }}", send, function (data) {
            data.forEach(function (item) {
                field.append(
                    $('<option>', {
                        value: item[0],
                        text: item[1]
                    })
                );
            });
            field.removeAttr('disabled');
        });
    }

    // Test fields and prod fields are two arrays now, so I can simply iterate through them
    tables.test_table.on('change', function () {
        fields.test.forEach(item => updateFields(tables.test_table, item));
    });
    tables.prod_table.on('change', function () {
        fields.prod.forEach(item => updateFields(tables.prod_table, item));
    });
});