我在我的 blade 文件 show.blade.php 中有一个 AJAX 搜索,我在该显示方法中显示特定用户 网址: http://127.0.0.1:8000/client/1
这是我的路线
Route::resource('client', 'ClientController',
['as' => 'encoder']);
它是一个资源 Controller ,包含用于显示特定客户端的 show 方法。
这是我在我的 Controller
中所做的public function show($id, Request $request)
{
$client = $this->clientRepository->with(['request' => function ($query) {
$query->orderBy('created_at', 'desc');
}])->findWithoutFail($id);
$keyword = $request->get('keyword');
if (!$keyword) {
$client_requests = AnalysisRequest::where('client_id', $client->id)
->orderBy('created_at', 'desc')->get();
} else {
$client_requests = AnalysisRequest::where('client_id', $client->id)
->OrWhere('id', 'LIKE', '%keyword%')
->OrWhere('sample_descrition', 'LIKE', '%keyword%')
->OrWhere('special_instruction', 'LIKE', '%keyword%')
->orderBy('created_at', 'desc')->get();
}
// dd($client_requests);
if (empty($client)) {
Flash::error('Client not found');
return redirect(route('encoder.client.index'));
}
echo view('encoder-dashboard.client.show', compact('client_requests'))
->with('client', $client)
->render();
}
我有一个 show 函数,它将显示一个特定的客户端,该 id 作为参数传递到 Controller 中,以便显示该特定的客户端。现在,我也有一个针对我想要搜索的特定客户的请求。
这就是我在 AJAX 中所做的。
$(document).ready(function(){
$('.searchbar').on('keyup', function(){
var text = $('#searchbar').val();
$.ajax({
dataType: "json",
type:"GET",
url: '{{ url('encoder/client') }}' + '/' + $('.id_search').val(),
data: {text: $('.searchbar').val()},
success: function(response) {
console.log(response);
}
});
});
});
在我的show.blade.php
<div class="row">
<div class="col-sm-6">
<div class="form-group" id="results">
<input type="hidden" id="client_id" class="id_search" name="client_id" value="{{ $client->id }}">
<input class="form-control searchbar" id="searchbar" name="searchbar" placeholder="Search...">
</div>
</div>
</div>
@include('encoder-dashboard.client.request')
最后是 request.blade.php
<!-- The timeline -->
@if (isset($client_requests) && count($client_requests) > 0)
@foreach($client_requests as $request)
<ul class="timeline timeline-inverse">
<!-- timeline time label -->
<li class="time-label">
<span class="bg-red">
{{ $request->created_at->format('M d, Y') }}
</span>
</li>
<!-- /.timeline-label -->
<!-- timeline item -->
<li>
<i class="fa fa-edit bg-blue"></i>
<div class="timeline-item">
<span class="time"><i class="fa fa-clock-o"></i> {{ $request->created_at->diffForHumans() }}</span>
<h3 class="timeline-header">Request Code: <a href="{!! route('encoder.analysis-request.show', $request->id) !!}">{{ $request->reference_no() }}</a>
@if ($request->rushable == 1)
<p style="color:red">This request is for RUSH!</p>
@else
@endif
</h3>
<div class="timeline-body">
Description: <b>{{ $request->sample_description }}</b>
<br>
Service Requested: <b>{{ $request->service->description }}</b>
<br>
Category Requested: <b>{{ $request->category->name }}</b>
<br>
Method Requested: <b>{{ $request->methodology->name }}</b>
<br>
Special Instruction: <b>{{ $request->special_instruction }}</b>
<br>
@if ($request->status == 'for_testing')
Status: <span class="label label-warning">Pending</span>
@elseif ($request->status == 'under_analyzation')
Status: <span class="label label-info">Under Analyzation</span>
@elseif ($request->status == 'finished')
Status: <span class="label label-success">Finished</span>
@endif
</div>
<div class="timeline-footer">
<a class="btn btn-primary btn-xs" href="{!! route('encoder.analysis-request.show', $request->id) !!}">Read more</a>
{{-- <a class="btn btn-danger btn-xs">Delete</a> --}}
</div>
</div>
</li>
</ul>
@endforeach
@endif
我做错了什么?我现在在这里没有收到任何错误。
我之前遇到了一个500 内部服务器错误,但由于 url 错误而设法修复了它。
GET http://127.0.0.1:8000/encoder/client/1?keyword=dsa 500 (Internal Server Error) send @ jquery.min.js:4 ajax @ jquery.min.js:4 (anonymous) @ 1:363 dispatch @ jquery.min.js:3 q.handle @ jquery.min.js:3
我在 app.blade.php 和脚本 ajax 设置 header 中的元数据中有我的 csrf token 。
我是否会在 Controller 中创建一个单独的方法,该方法具有相同的 GET 请求,但没有传递任何参数?并将 id 作为隐藏的请求输入传递以用于其他目的。
也许我应该POST 请求 而不是GET 请求? 但是怎么做呢?因为我还显示了将 id 作为参数传递的特定资源。
感谢有人能提供帮助。 提前致谢。
最佳答案
在你的 blade 文件中,head 部分:
<meta name="csrf-token" content="{{ csrf_token() }}">
您的 aJax 中缺少 csrf_token header 。替换为:
$.ajax({
dataType: "json",
type:"GET",
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: '{{ url('encoder/client') }}' + '/' + $('.id_search').val(),
data: {text: $('.searchbar').val()},
success: function(response) {
console.log(response);
}
});
});
关于php - Laravel 5.5 AJAX 实时数据搜索不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51261694/
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我有一个电子邮件表格。但是我正在制作一个测试电子邮件表单,用户可以在其中添加一个唯一的电子邮件,并让电子邮件测试将其发送到该特定电子邮件。为了简单起见,我决定让测试电子邮件通过ajax执行,并将整个内容粘贴到另一个电子邮件表单中。我不知道如何将变量从我的HAML发送到我的Controllernew.html.haml-form_tagadmin_email_blast_pathdoSubject%br=text_field_tag'subject',:class=>"mass_email_subject"%brBody%br=text_area_tag'message','',:nam
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
你能解释一下吗?我想评估来自两个不同来源的值和计算。一个消息来源为我提供了以下信息(以编程方式):'a=2'第二个来源给了我这个表达式来评估:'a+3'这个有效:a=2eval'a+3'这也有效:eval'a=2;a+3'但我真正需要的是这个,但它不起作用:eval'a=2'eval'a+3'我想了解其中的区别,以及如何使最后一个选项起作用。感谢您的帮助。 最佳答案 您可以创建一个Binding,并将相同的绑定(bind)与每个eval相关联调用:1.9.3p194:008>b=binding=>#1.9.3p194:009>eva
我无法运行Spring。这是错误日志。myid-no-MacBook-Pro:myid$spring/Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/sid.rb:17:in`fiddle_func':uninitializedconstantSpring::SID::DL(NameError)from/Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/li
我在RoR应用程序中有一个提交表单,是使用simple_form构建的。当字段为空白时,应用程序仍会继续下一步,而不会提示错误或警告。默认情况下,这些字段应该是required:true;但即使手动编写也行不通。该应用有3个步骤:NewPost(新View)->Preview(创建View)->Post。我的Controller和View的摘录会更清楚:defnew@post=Post.newenddefcreate@post=Post.new(params.require(:post).permit(:title,:category_id))ifparams[:previewButt
参考文章搭建文章gitte源码在线体验可以注册两个号来测试演示图:一.整体介绍 介绍SignalR一种通讯模型Hub(中心模型,或者叫集线器模型),调用这个模型写好的方法,去发送消息。 内容有: ①:Hub模型的方法介绍 ②:服务器端代码介绍 ③:前端vue3安装并调用后端方法 ④:聊天室样例整体流程:1、进入网站->调用连接SignalR的方法2、与好友发送消息->调用SignalR的自定义方法 前端通过,signalR内置方法.invoke() 去请求接口3、监听接受方法(渲染消息)通过new signalR.HubConnectionBuilder().on
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
我一直在Heroku上尝试不同的缓存策略,并添加了他们的memcached附加组件,目的是为我的应用程序添加Action缓存。但是,当我在我当前的应用程序上查看Rails.cache.stats时(安装了memcached并使用dalligem),在执行应该缓存的操作后,我得到current和total_items为0。在Controller的顶部,我想缓存我有的Action:caches_action:show此外,我修改了我的环境配置(对于在Heroku上运行的配置)config.cache_store=:dalli_store我是否可以查看其他一些统计数据,看看它是否有效或我做错
我在我的机器上安装了ruby版本1.9.3,并且正在为我的个人网站开发一个octopress项目。我为我的gems使用了rvm,并遵循了octopress.org记录的所有步骤。但是我在我的rake服务器中发现了一些错误。这是我的命令日志。Tin-Aung-Linn:octopresstal$ruby--versionruby1.9.3p448(2013-06-27revision41675)[x86_64-darwin12.4.0]Tin-Aung-Linn:octopresstal$rakegenerate##GeneratingSitewithJekyllidenticals