Javascript 使用AJAX文件的Laravel路由

Javascript 使用AJAX文件的Laravel路由,javascript,php,jquery,ajax,laravel,Javascript,Php,Jquery,Ajax,Laravel,我是Laravel的新手,我正在尝试学习如何创建一个动态下拉框,其中第二个下拉框将根据第一个下拉框中选择的内容进行更改 这是我的刀片文件中的表单代码: {!! Form::open(array('url'=>'', 'files'=>true)) !!} <label>Select a Cinema:</label><br> <select id = "cinema" name = "cinema"> @

我是Laravel的新手,我正在尝试学习如何创建一个动态下拉框,其中第二个下拉框将根据第一个下拉框中选择的内容进行更改

这是我的刀片文件中的表单代码:

{!! Form::open(array('url'=>'', 'files'=>true)) !!}
    <label>Select a Cinema:</label><br>
    <select id = "cinema" name = "cinema">
        @foreach ($cinemas as $cinema)
            <option value="{{$cinema->id}}">{{$cinema->name}}</option>
        @endforeach
    </select>
    <br>
    <label>Select a session:</label>
    <br>
    <select id = "sesh" name = "sesh">
        <option value=""></option>
    </select>
    <br>
    <label>Number of tickets:</label><br>
    <select id = "count" name ="count">
        @for ($i = 1; $i < 10; $i++)
            <option value="{{$i}}">{{$i}}</option>
        @endfor
    </select>
    <br><br>
    <input type="submit" value="Submit">
{!!Form::close()!!}
所以这段代码没有生成任何数据,而是给了我一个404错误

我已经通过警报验证了AJAX代码确实包含在“change”函数中,但是它没有显示第二个警报。以我有限的理解,我觉得我的路由文件中可能有问题?就像路由文件正在返回数据一样,AJAX中的下一个函数应该正在运行


在routes代码中有一件事我不理解,那就是Input::get('cinema_id')在做什么。我认为这是在抓取用户在下拉框中输入的内容?

因为它给出了404错误,我希望使用完整url可以解决这个问题。使用

//ajax
$.get('{{ url('/ajax-subcat') }}?cinema_id=' + cinema_id, function(data){
    //success data

在ajax调用中添加标题

headers : {
    'csrftoken' : '{{ csrf_token() }}'
}
改变

并将其添加到ajax中

headers: {
    'X-CSRF-Token':{{ csrf_token() }},
},

看起来这里发生了一些事情。将服务器上发生的事情与Laravel和客户端上发生的事情分开是很重要的

服务器
发送包含数据的表单。任何你这样使用的刀片语法

@foreach ($cinemas as $cinema)
   <option value="{{$cinema->id}}">{{$cinema->name}}</option>
@endforeach
将生成对您的
路由::get('/ajax subcat',…
以及查询字符串的请求。?cinema\u id=1
输入::get('cinema\u id');
应取查询字符串的值(1

看起来您已经正确设置了路由,所以我认为这是
var cinema\u id=e.target.value;
的问题。在发出请求之前,我会检查它的值,并确保它与服务器上的查询所需的值一致

客户端上的
var cinema\u id
的值将是服务器上用于查询的
$cinema\u id
的值

希望这有帮助


Matt

您的route“/ajax subcat”是否位于任何路由组内?我不知道,您的确切意思是抱歉?您的意思是将此:route::get('/ajax subcat');放置在route::group部分内?是的,您的路由是否放置在route::group()内有前缀吗?不,没有。是否应该是?运行
php artisan routes
,查看路由是否已注册。这似乎做了些什么!现在我遇到了另一个错误:找不到类输入。我必须定义类输入吗?或者可能包含它吗?至少我现在知道我已经输入了路由!谢谢太多了!!我只需要包括这个:使用Lista\Suff\Futs\\输入;非常感谢您的帮助。先生,请考虑这个情况。谢谢。如果您需要频繁使用输入,可以直接将输入外观添加到CONFIG/APP.PHP的别名数组中。这样,您不必每次使用输入时添加它。如<代码>Input'=>Illumb\Support\Facades\Input::class,也许您回复了错误的线程?我认为我没有上传的URL:
uploadUrl: '{{route("product/create")}}',
uploadUrl: '{{url("product/create")}}',
headers: {
    'X-CSRF-Token':{{ csrf_token() }},
},
@foreach ($cinemas as $cinema)
   <option value="{{$cinema->id}}">{{$cinema->name}}</option>
@endforeach
$.get('/ajax-subcat?cinema_id=' + cinema_id, ...