我的Laravel项目中有一个名为Clientecontroller的控制器,它工作得很好。在里面,我有一个名为listar()的方法,它为我提供客户的信息。
public function listar(Cliente $cliente) {
$clientes = DB::table('clientes')
->where('documento_id', 1)
->first();
return $clientes;
}
当然它有一些问题,但我的主要问题是,我如何从Angular或Ajax的视图中调用这个listar()函数,或者其他什么方法。
我在一个销售系统工作,在选择其他东西之前,我必须带上客户信息。我想在视图中写入客户端的ID号,并在不重新加载的情况下从控制器中获取客户端信息。但我仍然停留在到达listar()函数的过程中。
非常感谢。
在routes.php文件中添加
Route::post('/cliente', 'Clientecontroller@listar');
现在使用ajax调用将数据发送到/cliente,数据将通过ClienteController中的listar方法发送。
$.ajax({
type: "POST",
url: '/cliente',
data: { id: 7 }
}).done(function( msg ) {
alert( msg );
});
这个问题已经得到了回答,有关更多详细信息,请访问此处
1。经典的HTML方法
假设你的页面上有一个按钮:
<button id="call-listar">Call !</button>
您可以向Laravel应用程序发送HTTP请求,如下所示:
document.querySelector('#call-listar').addEventListener('click', (e) => {
// Use the fetch() API to send an HTTP Request :
fetch('/the-url-of-listar-controller')
.then(response => response.json())
.then(json => {
// Do what you want to do with the JSON
});
});
您可以在这里找到关于fetch()
API的非常有用的文档:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
2.角度组件内部
这是另一个故事,假设你的HTML模板中有这个按钮:
<button (click)="callListar()">Call !</button>
在TypeScript中,您可以使用HttpClientModule向Laravel应用程序发送HTTP请求:
class MyComponent {
constructor(private http: HttpClient){}
callListar() {
this.http.get('/url-of-listar-controller')
.subscribe(response => {
// Do what you want with the response
});
}
}
警告:需要HttpClientModule
您必须在您的AppModule或Angular应用程序的任何其他模块中导入HttpClientModule,以便使用此组件:
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [...],
imports: [HttpClientModule]
})