Laravel 使用 ajax 获取并发布到外部 php 控制器
Posted
技术标签:
【中文标题】Laravel 使用 ajax 获取并发布到外部 php 控制器【英文标题】:Laravel get and post to an external php controller with ajax 【发布时间】:2017-09-11 17:06:04 【问题描述】:我正在开发 laravel 项目,我需要将 AJAX 发布到 laravel 中的自定义函数,并获得对我的自定义视图的响应。
我有提款机
/app/Http/VatHelperController.php
<?php
namespace App\Http\Controllers;
use Request;
use App\Http\Requests;
use App\Http\Response;
use Illuminate\Support\Facades\Input;
class VatHelperController extends Controller
public function recieve()
$data = '555';
return View::make('clients.edit', $data);
在 routes.php 里面
// Vatchecker get post
Route::post('/vat', 'VatHelperController@receive');
Route::get('/vat', 'VatHelperController@receive');
在客户端/edit.blade.php 中
<div class="row">
<form>
<input type="text" id="input-vat">
<input type="submit" id="btn-test-submit">
</form>
<p>Result :</p>
<p class="test-result"></p>
</div>
<script>
$('#btn-test-submit').click(function(e)
e.preventDefault();
var vat_value = document.getElementById('input-vat').value;
var url = "http://185.81.165.216/index.php/vat";
if (vat_value !== "" && vat_value.length < 20)
$.ajax(
url: url,
type: 'POST',
data: vat_value,
dataType: 'json',
beforeSend: function(xhr)xhr.setRequestHeader('X-CSRF-TOKEN', $("#token").attr('content'));,
done: function(data)
$('.test-result').text('done');
,
error: function()
$('.test-result').text("didnt");
)
$('.test-result').text(vat_value);
else if (vat_value.length > 20)
$('.test-result').text('Your entered value is to long. Max lenght 20 char.');
else
$('.test-result').text('You have to enter value.');
$.get('index.php/vat', function()
console.log('response');
);
);
</script>
我的最终目标是制作表单并将数据与 post 一起发送到 helper 内部的函数并获得对 js 的响应,并在 table 中回显它,我唯一不知道的是如何在 laravel 中发布和获取。
【问题讨论】:
vathelper
必须是控制器
【参考方案1】:
在主项目目录中运行此命令:
php artisan make:controller VatHelperController
然后将其添加到 routes/web.php
Route::post('/vat', 'VatHelperController@receive');
然后将此函数添加到VatHelperController:
public function receive (Request $request)
// print all data sent
print_r( $request->all() );
// access particular data by:
echo $request->input('name');
最后你可以在想要的视图文件中添加这部分JS:
window.onload = funtion ()
$.ajax(
type: "POST",
url: "/vat",
data: name:"YourName",
success: function() ,
dataType: "json"
);
例如,您还可以在 JS 代码中使用位刀片变量
data: name: $php_var
阅读更多关于刀片模板中的 PHP 变量here
【讨论】:
通过ajax访问/vat时出现404是什么意思?【参考方案2】:您的代码中有些东西有点不对劲。
vathelper
看起来不像控制器。为了能够通过 HTTP 访问它,它必须是一个控制器。否则路由系统无法与之交互。
您不必自动加载您的类。它们已经在 \App
命名空间中自动加载。
clients.vat
是一个奇怪的名字。它会让浏览器认为它可能正在访问.vat
文件,不管它是什么。你应该叫它/clients/vat
【讨论】:
以上是关于Laravel 使用 ajax 获取并发布到外部 php 控制器的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5:在路由中获取 ajax 数据并传递给控制器
onclick 使用 ajax laravel 从数据库中获取数据
Laravel:使用 jquery ajax api 发布数据来存储数据时获取 405 Method Not Allowed