У меня довольно старый сайт, который я унаследовал как часть новой позиции - он был построен для спецификации версии Laravel 4.1. *.
Моя проблема - Response::json
возвращающая неопределенные переменные в ответе, используя стандартный метод post 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 - так, я думаю, что мои маршруты могут быть неправильно определены или неверно определены в параметре URL-адреса AJAX, возможно? Вот два применимых маршрута:
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);
}
}
}
Любые про-советы будут очень признательны!
чтобы проверить, что у вас отсутствует в контроллере при публикации или получении результата, который я обычно соблюдаю
в blade.php
<.form method="post" action="{{url('supply-us/application')}}".> {{csrf_field()}}
<.input type="text" name="companyName".> <./form.>
remove dot попробуйте это, это поможет вам найти недостающую вещь в контроллере
в лезвии
<.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); } }
}
console.log(response);
в успехе AJAX