Laravel 使用 ajax 获取并 post 到外部 php 控制器
Laravel get and post to an external php controller with ajax
我正在处理 laravel 项目,我需要在 laravel 中制作 AJAX post 自定义函数,并获得对我的自定义视图的响应。
我有自动取款机
/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');
里面 clients/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 中回显它,这是我唯一想不通的out 是如何 post 和进入 laravel.
你的代码中有些东西有点偏离。
vathelper
看起来不像控制器。为了能够通过 HTTP 访问它,它必须是一个控制器。否则路由系统无法与之交互。
您不必自动加载 类。它们已经自动加载到 \App
命名空间中。
clients.vat
是个奇怪的名字。它会让浏览器认为它可能正在访问一个 .vat
文件,不管它是什么。你应该叫它 /clients/vat
运行 在主项目目录中执行此命令:
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 代码中使用一些 blade 变量,例如
data: {name: {{$php_var}} }
详细了解 blade 模板中的 PHP 个变量 here
我正在处理 laravel 项目,我需要在 laravel 中制作 AJAX post 自定义函数,并获得对我的自定义视图的响应。
我有自动取款机
/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');
里面 clients/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 中回显它,这是我唯一想不通的out 是如何 post 和进入 laravel.
你的代码中有些东西有点偏离。
vathelper
看起来不像控制器。为了能够通过 HTTP 访问它,它必须是一个控制器。否则路由系统无法与之交互。您不必自动加载 类。它们已经自动加载到
\App
命名空间中。clients.vat
是个奇怪的名字。它会让浏览器认为它可能正在访问一个.vat
文件,不管它是什么。你应该叫它/clients/vat
运行 在主项目目录中执行此命令:
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 代码中使用一些 blade 变量,例如
data: {name: {{$php_var}} }
详细了解 blade 模板中的 PHP 个变量 here