【发布时间】:2020-04-18 17:41:43
【问题描述】:
我是 laravel 的新用户,我正在尝试创建一个联系人应用程序来练习。
我如何调用 url 或使用 javascript 路由控制器?,显示我的代码来解释我。我在名为 insertDate 的控制器联系人中创建了新方法。我在视图 save.blade.php 中调用此方法并在主体模板 navs.blade.php 中使用 ajax 此文档位于文件夹布局中,javascript 脚本位于文件夹 public js/ajax.js 中。
控制台导航器,打印错误 404 not found POST,是脚本 url,我如何调用我的控制器或路由的 url?
Web.php
//Routes
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::resource('contactos', 'Contacts');
Route::post('contactos', 'Contacts@insertDate')->name('contacts.insertDate');
联系人控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Contact;
class Contacts extends Controller
{
public function __construct(){
//$this->middleware('auth');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$ejemplo = 'Prueba';
$hola = 'pepito es pepa';
return view('save', compact('ejemplo', 'hola'));
}
public function insertDate(Request $request)
{
if($request->ajax()){
$contact = new Contact;
$contact->name = $request->name;
$contact->phone = $request->phone;
$contact->save();
}
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
拯救刀片
<div class="container-form">
<form action="{{ route('contacts.insertDate')}}" method="POST">
@csrf
<input type="text" name="name" id="name" class="form-control-sm inputs" placeholder="Persona">
<input type="text" name="phone" id="phone" class="form-control-sm inputs" placeholder="Celular">
<button id="save" class="btn btn-primary btn-sm">Guardar</button>
</form>
</div>
ajax
let name = document.querySelector('#name').value;
let phone = document.querySelector('#phone').value;
let save = document.querySelector('#save');
let getUrl = "{{ route('contactos') }}";
const saveDate = ( url, var1, var2) =>{
let xhttp = new XMLHttpRequest;
let token = '{{ csrf_token() }}';
let data = {
_token: token,
name: var1,
phone: var2
}
xhttp.open('POST', url, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send(data);
}
save.addEventListener('click', saveDate(getUrl, name, phone));
控制台导航器,打印错误 404 not found POST,是脚本 url,我如何调用我的控制器或路由的 url?
【问题讨论】:
-
没有名称为
contactos的route('contactos'),我猜你的getUrl应该是{{ route('contacts.insertDate') }} -
嗨 Muhammad Amirozzaman Niaz,谢谢,但控制台浏览器会打印此错误 ajax.js:16 POST contactos.test/… 404 (Not Found)
-
{{ route('contacts.insertDate') }}应该返回一个 URL,而不是它本身。由于这是刀片语法,它必须在刀片.php 文件中才能使用 url 呈现。 -
尝试在
getUrl中插入硬编码的url,以测试您的请求是否成功。 -
mmm 请举个例子,我在模板 nav.blade.php 中有这个脚本,我删除了代码脚本 src="{{asset('js/ajax.js')}} 并添加@yield('script') 在模板视图中,在视图中添加脚本之前保存 @section 脚本,但我无法解决这个问题:/,你能帮我举个例子吗?
标签: javascript php ajax laravel