@GaserV

Почему Laravel не выводит данные из post?

Почему Laravel не выводит данные из post? Когда я просто возвращаю $formData, то он выводит типа: {{"title":"вывы","text":"вывы"}: ""} Но когда пытаюсь вывести что-либо, например $formData['title'] то пишет, мол:

ErrorException in UserController.php line 13:
Undefined index: title

<?php namespace App\Http\Controllers;

use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use Request;

class UserController extends Controller 
{
	public function index() {

		$formData = Request::all();

		return $formData;

	}
}

?>


$scope.sendform = function(e) {
  		e.preventDefault();
  		$scope.formData = {};
  		
  		var title = this.title;
  		var text  = this.text;

  		var req = {
		 method: 'POST',
		 url: '/send',
		 headers: {'Content-Type': 'application/x-www-form-urlencoded'},
		 data: { title: title, text: text }
		}

		$http(req).then(function(){
			alert("success!")
		}, function(){
			alert("error!")
		});

  	}
  • Вопрос задан
  • 624 просмотра
Пригласить эксперта
Ответы на вопрос 1
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
     data: { title: title, text: text }

Этот код не станет посылать вам запросы в application/x-www-form-urlencoded. По дефолту ангулар шлёт все запросы в application/json. Чтобы это обойти нужно определить функцию transformRequest, которая будет делать из ваших данных urlencoded строку.
Для этого можно воспользоваться например функцией jQuery.param().
P.S. рекомендую включить на бекенде возможность обработки application/json в качестве body, намного меньше мороки.

Для вашего случая будет выглядеть так:
function transformRequest(data) {
	return $.param(data);
}
var req = {
	method: 'POST',
	url: '/send',
	data: {title: this.title, text: this.text},
	transformRequest: transformRequest,
	headers: {'Content-Type': 'application/x-www-form-urlencoded'},
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы