在 Laravel 4.1 中形成 AJAX 后响应周期。*
Posted
技术标签:
【中文标题】在 Laravel 4.1 中形成 AJAX 后响应周期。*【英文标题】:Form AJAX post response cycle in Laravel 4.1.* 【发布时间】:2018-07-10 08:17:31 【问题描述】:我有一个相当旧的网站,作为新职位的一部分,我继承了该网站 - 它是根据 Laravel 4.1.* 版本规范构建的。
我的问题是 Response::json
在响应中返回未定义的变量,使用标准 AJAX 发布方法,所有 CSRF 内容和正确定义的 ajaxSetup()。
application.blade.php
$.ajax(
type: 'POST', //This will always be a post method for the supplier chain check form.
url: 'supply-us/application', //URL endpoint for the post form method: we'll set this to the controller function we're targeting.
data: 'companyName': values['companyName'] , //This will carry the form data that is needed to be passed to the server.
success: function (response)
console.log(response['companyName']); << THIS LINE RETURNS "undefined"
console.log(typeof response) << THIS LINE RETURNS string
,
error: function (response)
console.log(response);
,
);
values['companyName'] 返回我在表单中输入的内容。上面的“响应”简单返回 html - 所以我认为我的路由可能在 AJAX url 参数中定义不正确或定义不正确,也许?以下是两条适用的路线:
routes.php
Route::controller('supply-us/application', 'ApplicationController');
Route::post('supply-us/application', 'ApplicationController@processSupplierApplication');
ApplicationController.php:
<?php
use Illuminate\Http\Request;
class ApplicationController extends FrontController
public function getSupplierApplication()
return self::getPage('supply-us/application');
public function processSupplierApplication(Request $request)
if (Input::has('companyName'))
$this->companyName = Input::get('companyName');
$data = [
'success': true,
'companyName': $this->companyName
];
return response()->json($data);
任何专业提示将不胜感激!
【问题讨论】:
在 ajax 成功后console.log(response);
会得到什么
@michael 试试这个 console.log(response.companyName);
@bipin 我先尝试过 - 仍然未定义...
@MichaelRoberts 像这样尝试例如:-$app="error";返回响应()->json($app);然后在你的 console.log(response.companyName);
console.log(response.companyName);你正在返回 json
【参考方案1】:
在发布或获取结果时检查控制器中缺少的内容 通常我会遵循
在blade.php中
<.form method="post" action="%7B%7Burl('supply-us/application')%7D%7D" .> csrf_field()<.input type="text" name="companyName" .><.>
删除点试试这个它会帮助你找到控制器中丢失的东西
在你的刀片中
<.input type="text" name="companyName" id="companyName".>
在你的 ajax 中
var company = $('#companyName').val();
$.ajax(
type: 'POST',
url: 'supply-us/application',
data: 'Company':company,'_token': ' csrf_token() ' ,
success: function (response)
alert(data) // if this not work then try this alert(data.company)
,
error: function (response)
console.log(response);
,
);
在你的控制器中
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
class ApplicationController extends FrontController
public function getSupplierApplication()
return self::getPage('supply-us/application');
public function processSupplierApplication(Request $req)
if (!$req->get('Company')==null)
$company = $req->get('Company');
return response()->json($company);
else
$company="no input give";
return response()->json($company);
【讨论】:
嗨 Bipin - 嗯,好的 - 所以我在 AJAX 提交中使用了 preventDefault,所以我不想走这条线。这是一种响应形式。我正在做所有的 csrf 东西。问题是返回的数据未定义。我只想知道如何在 post controller@function 中接受数据,然后处理该数据,然后将数据提交回视图。它真的不应该是这么复杂的恕我直言。我完全可以用 Django 做到这一点。 Laravel 为什么这么痛苦?? @MichaelRoberts 更新的答案请检查希望这会对你有所帮助 @MichaelRoberts 其实太简单了,你只需要熟悉这个 您的答案有很多问题,我不知道从哪里开始。首先,数据没有定义。那么是 response.companyName 吗? alert(response.CompanyName) 返回为未定义。以上是关于在 Laravel 4.1 中形成 AJAX 后响应周期。*的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 中使用 Ajax 调用将数据发布到数据库?