javascript - Laravel 5.3 无法将脚本放在 View 中(自动完成字段)

标签 javascript php jquery html laravel-5.3

我目前正在实习 Laravel 5.3。 正如您所猜到的,我有一个烦人的问题让我来解释一下:

在页面上,我必须放置一个“自动完成”字段,但它根本不起作用。 我有这个错误我无法解决:

[Vue warn]: Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as <script>, as they will not be parsed. app.js:139

此外,我需要保留 larvel «模板»,例如带有登录名等的顶部栏......

我尝试了很多在互联网上找到的解决方案,但没有任何效果。 我完全绝望了,你有什么解决办法吗? ps:对不起,我的语法很糟糕,我是法语,正在学习,感谢您的理解。

selectcr.blade.php

@extends('layouts.app')

@section('content')

<!DOCTYPE html>

<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Selection de Compte-Rendu</div>

                <div class="panel-body"> Selectionnez le client:

                  <input  id="intervenant-name"  type="text" class="form-control pd-l-50" placeholder="Recherche par nom d'entreprise">

                  <script src="{{asset('js/jquery-1.12.4.js')}}"></script>

                  <script src="{{asset('js/jquery-ui.js')}}"></script>

                  <script>
                  (function () {
                      src = "/prefcard/maker-search-intervenant";
                      $("#intervenant-name").autocomplete({
                          source: function (request, response)
                          {
                              $.ajax({
                                  url: src,
                                          dataType: "json",
                                          data:
                                          {
                                              term: request.term
                                          },
                                          success: function (data)
                                          {
                                              response(data);
                                          }
                              });
                          },
                          min_length: 2,
                          select: function (event, ui)
                          {
                                  //console.log(ui.item.value);return false;
                              var test = ui.item.value ? ui.item.value : '';
                              if (test != '')
                              {
                                  var url = '/prefcard/maker-search-intervenant';
                                  var formAutocomplete = $('<form action="' + url + '" method="post">' +
                                          '<input type="hidden" name="_token" value="{{ csrf_token() }}">' +
                                          '<input type="text" name="term" value="' + ui.item.value + '" />' +
                                          '</form>');
                                  $('body').append(formAutocomplete);
                                  formAutocomplete.submit();
                              }
                            }
                      });
                  })();
                  </script>

                </div>
            </div>
        </div>
    </div>
</div>
@yield('javascript')

@endsection

SelectCRController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;

class SelectCRController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('selectcr');
    }

    public function searchIntervenant(Request $request) {

        $query = $request->get('term', '');

        $results = DB::table('intervenant')->where('intervenantEntreprise', 'LIKE', '%' . $query . '%')->orWhere('intervenantFonction', 'LIKE', '%' . $query . '%')->take(5)->get();

        $data = array();
        foreach ($results as $result) {
            $data[] = array('value' => $result->intervenantEntreprise . ' ' . $result->intervenantEmail, 'id' => $result->id);
        }
        if (count($data))
            return $data;
        else
            return ['value' => 'No Result Found', 'id' => ''];
    }

    public function postSearchIntervenant(Request $request) {
        //Do whatever you want to search accordingly name and then return
        return view('dashboard')->with('intervenant', $intervenant);
    }
}

web.php

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| This file is where you may define all of the routes that are handled
| by your application. Just tell Laravel the URIs it should respond
| to using a Closure or controller method. Build something great!
|
*/

Route::get('/', function () {return view('welcome');});

Auth::routes();

Route::get('/home', 'HomeController@index');
Route::get('/configuration', 'ConfigurationController@index');

Route::get('/selectcr', 'SelectCRController@index');
Route::get('/prefcard/maker-search-intervenant', 'SelectCRController@searchIntervenant');
Route::post('/prefcard/maker-search-intervenant', 'SelectCRController@postSearchIntervenant');

Route::get('/intervenant', function () {return view('intervenant');});
Route::get('/api/intervenant/{id?}', 'IntervenantController@index');
Route::post('/api/intervenant', 'IntervenantController@store');
Route::post('/api/intervenant/{id?}', 'IntervenantController@update');
Route::delete('/api/intervenant/{id?}', 'IntervenantController@destroy');

Route::get('/utilisateur', function () {return view('utilisateur');});
Route::get('/api/utilisateur/{id?}', 'UtilisateurController@index');
Route::post('/api/utilisateur', 'UtilisateurController@store');
Route::post('/api/utilisateur/{id?}', 'UtilisateurController@update');
Route::delete('/api/utilisateur/{id?}', 'UtilisateurController@destroy');

Route::post('register', 'Auth\RegisterController@register');

//Route::auth();

app.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>{{ config('app.name', 'Laravel') }}</title>

    <!-- Styles -->
    <link href="/css/app.css" rel="stylesheet">

    <!-- Scripts -->
    <script>
        window.Laravel = <?php echo json_encode([
            'csrfToken' => csrf_token(),
        ]); ?>
    </script>
</head>
<body>
    <div id="app">
        <nav class="navbar navbar-default navbar-static-top">
            <div class="container">
                <div class="navbar-header">

                    <!-- Collapsed Hamburger -->
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
                        <span class="sr-only">Toggle Navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>

                    <!-- Branding Image -->
                    <a class="navbar-brand" href="{{ url('/') }}">
                        {{ config('app.name', 'Laravel') }}
                    </a>
                </div>

                <div class="collapse navbar-collapse" id="app-navbar-collapse">
                    <!-- Left Side Of Navbar -->
                    <ul class="nav navbar-nav">
                        &nbsp;
                    </ul>

                    <!-- Right Side Of Navbar -->
                    <ul class="nav navbar-nav navbar-right">
                        <!-- Authentication Links -->
                        @if (Auth::guest())
                            <li><a href="{{ url('/login') }}">Login</a></li>
                        @else
                            <li class="dropdown">
                                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
                                    {{ Auth::user()->name }} <span class="caret"></span>
                                </a>

                                <ul class="dropdown-menu" role="menu">
                                    <li>
                                        <a href="{{ url('/logout') }}"
                                            onclick="event.preventDefault();
                                                     document.getElementById('logout-form').submit();">
                                            Logout
                                        </a>

                                        <form id="logout-form" action="{{ url('/logout') }}" method="POST" style="display: none;">
                                            {{ csrf_field() }}
                                        </form>
                                    </li>
                                </ul>
                            </li>
                        @endif
                    </ul>
                </div>
            </div>
        </nav>

        @yield('content')
    </div>

    <!-- Scripts -->
    <script src="/js/app.js"></script>
</body>
</html>

更新

现在,经过一些修改,错误消失了,但脚本根本不起作用。

<!DOCTYPE html>

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Selection de Compte-Rendu</div>

                <div class="panel-body"> Selectionnez le client:
                  <input  id="intervenant-name"  type="text" class="form-control pd-l-50" placeholder="Recherche par nom d'entreprise">


                </div>
            </div>
        </div>
    </div>
</div>
@endsection

@section('scripts')
<script src="{{asset('js/jquery-1.12.4.js')}}"></script>
<script src="{{asset('js/jquery-ui.js')}}"></script>
<script>
(function () {
    src = "/prefcard/maker-search-intervenant";
    $("#intervenant-name").autocomplete({
        source: function (request, response)
        {
            $.ajax({
                url: src,
                        dataType: "json",
                        data:
                        {
                            term: request.term
                        },
                        success: function (data)
                        {
                            response(data);
                        }
            });
        },
        min_length: 2,
        select: function (event, ui)
        {
                //console.log(ui.item.value);return false;
            var test = ui.item.value ? ui.item.value : '';
            if (test != '')
            {
                var url = '/prefcard/maker-search-intervenant';
                var formAutocomplete = $('<form action="' + url + '" method="post">' +
                        '<input type="hidden" name="_token" value="{{ csrf_token() }}">' +
                        '<input type="text" name="term" value="' + ui.item.value + '" />' +
                        '</form>');
                $('body').append(formAutocomplete);
                formAutocomplete.submit();
            }
          }
    });
})();
</script>
@endsection

@yield('javascript')

最佳答案

1) 你有一个 Vuejs 错误(请添加标签)。看起来您需要将脚本标签移出 vuejs 容器。

2) !DOCTYPE html 必须在文档的顶部,而不是在中间。

关于javascript - Laravel 5.3 无法将脚本放在 View 中(自动完成字段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41805684/

相关文章:

javascript - HTML5 Canvas 的调整大小功能

PHP Select 语句需要快速更正

php - PHP 社区的现状如何?

jquery - 处理 'mouseleave' 而 'mousedown'

javascript - 使多边形变小

javascript - Angular 4/Typescript - 如何使用 Typescript 编辑 HTML 文件

javascript - 使用 jQuery Mobile 防止提交时重置表单

jquery - 使用 JQuery 对列表框进行排序

javascript - nivoSlider 未定义的资源

php - 对 PHP 数组编号进行分组