简体   繁体   English

Laravel 5.4将JavaScript粘贴到刀片模板中

[英]Laravel 5.4 Paste JavaScript in blade template

I am adding AJAX script to my Laravel blade template file. 我正在将AJAX脚本添加到我的Laravel刀片模板文件中。 But for some reason my JavaScript not working properly. 但是由于某种原因,我的JavaScript无法正常工作。 It seats there on the page, and everything is good but when i try to trigger function by clicking on button it's just don't work. 它坐落在页面上,一切都很好,但是当我尝试通过单击按钮来触发功能时,那是行不通的。

This JavaScript code cannot be in the separate file, because I am crating a lot of different forms which should be processed with it own JavaScript function. 该JavaScript代码不能放在单独的文件中,因为我创建了许多不同的表单,这些表单应使用自己的JavaScript函数进行处理。 So I need to have this functions on the loop with the form. 因此,我需要在窗体循环上具有此功能。

Here is my whole blade template file script: 这是我的整个刀片服务器模板文件脚本:

@if($inventories)

<a href="{{ url('/inventory') }}" type="button" class="btn btn-sm btn-primary"> <<- Back To Inventory</a>    
<div class="text-center"><b>Search Page</b></div>
<br>
<br>

<div class="search">
    <div class="col-md-12">
        @include(env('THEME').'.search_box')
    </div>
</div>

<table>

    @foreach($inventories as $inventory)
    <tr >
        <td class="part_img" rowspan="3"><a href="{{ route('inventory.show',['slug' => $inventory->slug]) }}"><img src="{{ asset(env('THEME')) }}/images/inventory/{{$inventory->main_img}}"></a></td>
    </tr>
    <tr>
        <td class="inventory_part_title" colspan="8">
            <div style="float: left; margin: 0 30px;">{{ $inventory->part_number }}</div>
            <div style="float: left;"><a href="{{ route('inventory.show',['slug' => $inventory->slug]) }}">{{ $inventory->title }}</a></div>
            <div style="float: right; margin-right: 50px;">{{ $inventory->upc_number }}</div>
        </td>
    </tr>
    <tr>
        <td><b>Location:</b> {{ $inventory->storage_location }}</td>
        <td><b>Brand:</b> {{ $inventory->brand }}</td>
        <td><b>Supplier:</b> {{ $inventory->supplier }}</td>
        <td><b>GBP:</b> &#163;{{ $inventory->unit_price_gbp }}</td>
        <td><b>USD:</b> ${{ $inventory->unit_price_usd }}</td>
        <td><b>In Stock:</b> {{ $inventory->unit_in_stock }}</td>
        <td><b>Sold:</b> {{ $inventory->unit_sold }}</td>
        <td>
            <div class="onpage-sold-input">
                {!! Form::open(['url' => route('sold.sold'),'class'=>'contact-form', 'id'=>'search-sold-button-'.$inventory->id,'method'=>'POST']) !!}
                    {!! Form::text('sold', old('sold'), array('class'=>'form-control', 'placeholder'=>'Qty.')) !!}
                    <input type="hidden" name="part_id" value="{{ $inventory->id }}">
                    <input type="hidden" name="_token" value="{{ csrf_token() }}">
                    {!! Form::button('Sold', ['class' => 'btn btn-sm btn-success sold-button', 'id'=>'sold-button-'.$inventory->id,'type'=>'submit']) !!}
                {!! Form::close() !!}
            </div>

            <script type="text/javascript">
                $('#sold-button-{{ $inventory->id }}').on('click', function (e) {
                    e.preventDefault();

                    var form = $('#search-sold-button-{{ $inventory->id }}'),
                        data = form.serialize(),
                        ajax_url = form.attr('action'),
                        alert_section = $('.alert-section');

                        console.log(ajax_url);
                        console.log(data);

                    $.post(ajax_url, data, function (resp) {
                        alert_section.fadeIn().find('.alert').html(resp);
                        setTimeout(function () {
                            alert_section.fadeOut();
                        }, 3000)
                    })
                });
            </script>

        </td>
        <!--<td><button type="button" class="btn btn-sm btn-success">Edit</button></td>-->
    </tr>
    <tr>
        <td colspan="8"></td>
    </tr>
    @endforeach

</table>

@else    
<p>Inventory is empty!</p>
@endif

How can I fix this issue? 如何解决此问题?

Here is example with your given code. 这是给定代码的示例。 Hope this will help you. 希望这会帮助你。

Code might not work I haven't tested it. 代码可能无法正常工作,但我尚未对其进行测试。 but this way you don't have to put JS code in Loop but with single function. 但是通过这种方式,您不必将JS代码放入Loop中,而只需使用一个函数即可。

Here we are calling JS function "searchSold" on Submit click event. 在这里,我们在Submit click事件上调用JS函数“ searchSold”。

    @if($inventories)

            <a href="{{ url('/inventory') }}" type="button" class="btn btn-sm btn-primary"> <<- Back To Inventory</a>    
            <div class="text-center"><b>Search Page</b></div>
            <br>
            <br>

            <div class="search">
                <div class="col-md-12">
                    @include(env('THEME').'.search_box')
                </div>
            </div>

            <table>

                @foreach($inventories as $inventory)
                <tr >
                    <td class="part_img" rowspan="3"><a href="{{ route('inventory.show',['slug' => $inventory->slug]) }}"><img src="{{ asset(env('THEME')) }}/images/inventory/{{$inventory->main_img}}"></a></td>
                </tr>
                <tr>
                    <td class="inventory_part_title" colspan="8">
                        <div style="float: left; margin: 0 30px;">{{ $inventory->part_number }}</div>
                        <div style="float: left;"><a href="{{ route('inventory.show',['slug' => $inventory->slug]) }}">{{ $inventory->title }}</a></div>
                        <div style="float: right; margin-right: 50px;">{{ $inventory->upc_number }}</div>
                    </td>
                </tr>
                <tr>
                    <td><b>Location:</b> {{ $inventory->storage_location }}</td>
                    <td><b>Brand:</b> {{ $inventory->brand }}</td>
                    <td><b>Supplier:</b> {{ $inventory->supplier }}</td>
                    <td><b>GBP:</b> &#163;{{ $inventory->unit_price_gbp }}</td>
                    <td><b>USD:</b> ${{ $inventory->unit_price_usd }}</td>
                    <td><b>In Stock:</b> {{ $inventory->unit_in_stock }}</td>
                    <td><b>Sold:</b> {{ $inventory->unit_sold }}</td>
                    <td>
                        <div class="onpage-sold-input">
                            {!! Form::open(['url' => route('sold.sold'),'class'=>'contact-form', 'id'=>'search-sold-button-'.$inventory->id,'method'=>'POST']) !!}
                                {!! Form::text('sold', old('sold'), array('class'=>'form-control', 'placeholder'=>'Qty.')) !!}
                                <input type="hidden" name="part_id" value="{{ $inventory->id }}">
                                <input type="hidden" name="_token" value="{{ csrf_token() }}">
                                {!! Form::button('Sold', ['class' => 'btn btn-sm btn-success sold-button', 'id'=>'sold-button-'.$inventory->id,'type'=>'submit','onclick' => 'searchSold(event,".$inventory->id.")' ]) !!}
                            {!! Form::close() !!}
                        </div>

                    </td>
                    <!--<td><button type="button" class="btn btn-sm btn-success">Edit</button></td>-->
                </tr>
                <tr>
                    <td colspan="8"></td>
                </tr>
                @endforeach

            </table>

@else    
    <p>Inventory is empty!</p>
@endif

        <script type="text/javascript">

        function searchSold(event,inventory_id){

            event.preventDefault();

            var form = $('#search-sold-button-'+inventory_id);
            var data = form.serialize();
            var ajax_url = form.attr('action');
            var alert_section = $('.alert-section');

            $.post(ajax_url, data, function (resp) {                                    
                alert_section.fadeIn().find('.alert').html(resp);
                setTimeout(function () {
                    alert_section.fadeOut();
                }, 3000)
            });
        }
        </script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM