收集多个数据并通过lajvel中的ajax发送

maf*_*tis 9 javascript php ajax jquery laravel

我正在使用ajax将我的数据发送到控制器并将其保存在数据库中,在我的代码工作之前,我需要在对数据进行排序后对它们进行排序,然后排序它们停止工作%50.

很高兴知道

这是我的旧代码和排序我的数据的解决方案(这导致我现在有这个问题)

逻辑

  1. 我选择了一套
  2. 设置子项将附加到刀片中(按自定义列排序)
  3. 我选择单个或多个选项并点击保存按钮
  4. 数据保存到数据库

更多要知道

我的附加数据(基于选定的集合)包括2种类型的数据

  1. 自定义输入(文本字段和文本区域字段),我可以手动填写和保存(仍然没有问题)
  2. 动态选择选项从数据库返回,我可以选择并保存他们的ID(这是问题动态)

Script of appending data

<script defer>
$(document).ready(function() {
    $('select[name="selectset"]').on('change', function() {
        var id = $(this).val();
        if(id) {
            $.ajax({
                url: '{{ url('admin/selectset') }}/'+encodeURI(id),
                type: "GET",
                dataType: "json",
                success:function(result) {
                    $('div#dataaamsg').empty();
                    $('div#dataaamsg').append('Use <kbd>CTRL</kbd> or <kbd>SHIFT</kbd> button to select multiple options');
                    result.sort(function(a,b) {
                        return (a.position > b.position) ? 1 : ((b.position > a.position) ? -1 : 0);
                    });

                    $.each(result, function(key1, value1) {

                        var vvvid = value1.id;

                        if(value1['type'] == 'textfield'){
                            var my_row = $('<div class="row mt-20 ccin">');
                            $('div#dataaa').append(my_row);
                        }else if(value1['type'] == 'textareafield'){
                            var my_row = $('<div class="row mt-20 ccin">');
                            $('div#dataaa').append(my_row);
                        }else{
                            var my_row = $('<div class="row mt-20">');
                            $('div#dataaa').append(my_row);
                        }

                        // second data
                        $.ajax({
                            url: '{{ url('admin/findsubspecification') }}/'+value1['id'],
                            type: "GET",
                            dataType: "json",
                            success:function(data) {
                                // Check result isnt empty
                                var helpers = '';
                                $.each(data, function(key, value) {
                                    helpers += '<option value="'+value.id+'">'+value.title+'</option>';
                                });

                                if(value1['type'] == 'textfield'){
                                    var my_html = '{{ Form::open() }}<input name="product_id" id="product_id" type="hidden" value="{{$product->id}}"><input name="specification_id" id="specification_id" type="hidden" value="'+vvvid+'"><div class="col-md-4">'+value1.title+'</div>';
                                    my_html += '<div class="col-md-6"><input id="text_dec" name="text_dec[]" placeholder="text field" class="text_dec form-control"></div>';
                                    my_html += '<div class="col-md-2"><button type="button" id="custmodalsavee" class="custmodalsavee btn btn-xs btn-success">Save</button>{{Form::close()}}</div>';
                                    my_row.html(my_html);
                                }else if(value1['type'] == 'textareafield'){
                                    var my_html = '{{ Form::open() }}<input name="product_id" id="product_id" type="hidden" value="{{$product->id}}"><input name="specification_id" id="specification_id" type="hidden" value="'+vvvid+'"><div class="col-md-4">'+value1.title+'</div>';
                                    my_html += '<div class="col-md-6"><textarea id="longtext_dec" name="longtext_dec[]" placeholder="text area field" class="longtext_dec form-control"></textarea></div>';
                                    my_html += '<div class="col-md-2"><button type="button" id="custmodalsavee" class="custmodalsavee btn btn-xs btn-success">Save</button>{{Form::close()}}</div>';
                                    my_row.html(my_html);
                                }else{
                                    var my_html = '{{ Form::open() }}<input name="product_id" id="product_id" type="hidden" value="{{$product->id}}"><div class="col-md-4">'+value1.title+'</div>';
                                    my_html += '<div class="col-md-6"><select class="subspecifications form-control tagsselector" id="subspecifications" name="subspecifications[]" multiple="multiple">'+helpers+'</select></div>';
                                    my_html += '<div class="col-md-2"><button type="button" id="savedynspecto" class="savedynspecto btn btn-xs btn-success">Save</button>{{Form::close()}}</div>';
                                    my_row.html(my_html);
                                }


                            }
                        });
                        // second data

                    });
                }
            });
        }else{
            $('div#dataaa').empty();
        }
    });
});
</script>
Run Code Online (Sandbox Code Playgroud)

script of saving data (issue part)

<script defer>
  $(document).ready(function() {
   $("body").on("click", ".savedynspecto", function(e){
      var form = $(this).closest('form');
      var id = form.find('input[name="product_id"]').val();
      // e.preventDefault();
      $.ajax({
        type: "post",
        url: '{{ url('admin/spacssendto') }}',
        data: {
          '_token': $('input[name=_token]').val(),
          'product_id': id,
          'subspecifications': $(this).closest('form').find('select.subspecifications').val()
        },
        success: function (data) {
          alert('Specifications added successfully.');
          console.log($(this));
        },
        error: function (data) {
          console.log(data);
        }
      });
    });
  });
</script>
Run Code Online (Sandbox Code Playgroud)

问题

  1. 当我尝试保存动态值时,我无法获得所选选项/选项的ID

    //在网络参数中返回数据_token g1GnKZvzXDztR1lqgDdjI5QOg67SfmmBhjm80fKu product_id 18个子规格

PS1

我试图改变val()serialize()和我

_token g1GnKZvzXDztR1lqgDdjI5QOg67SfmmBhjm80fKu
product_id 18
subspecifications subspecifications%5B%5D=20&subspecifications%5B%5D=21&subspecifications%5B%5D=23&subspecifications%5B%5D=32"
Run Code Online (Sandbox Code Playgroud)

我所需要的只是21,23,32subspecifications%5B%5D=在他们每个人之前得到的.

PS2

我试图改变$("body").on("click", ".savedynspecto", function(e){它不会发送任何数据到后端(没有任何打印在网络甚至错误代码)

任何的想法?

Lou*_*tte 2

在要附加的字符串中的按钮...之后,您有{{Form::close()}}</div>.

我认为</div>应该出现在 之前{{Form::close()}}

混乱的 HTML 结构很快就会导致奇怪的情况。
我不能 100% 确定这就是问题所在……但有可能。