Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.11.2015 01:02:27

Ошибка при отправки AJAX'а.

Доброго времени суток! Начал делать отправку сообщения по AJAX (jQuery), но выходит ошибка 200, а так же информация о том, что это не JSON (php).

Контроллер:

class PostsController extends BaseController{ 

	public function jsonPosts(){
		if(Request::ajax()){
			// Если это Ajax запрос
			if(Request::isJson()){
				// Если это JSON
				echo 'JSON';
			}else{
				// Если это не JSON
				echo 'Not JSON';   <=================== Всегда выходит
			}
		}else{
			// Если это не Ajax запрос 
			echo 'Not AJAX';
		}
	}
}

Роут:

Route::post('posts/addpost', ['as' => 'jsonPosts', 'uses' => 'PostsController@jsonPosts']);

Шаблон:

<div class="brd">
	{{Form::token()}}
	{{Form::textarea('text_posts', '', ['class' => 'grid12', 'id' => 'addPosts', 'placeholder' => Lang::get('site.pages.home.posts.addPosts.placeholder'), 'style' => 'resize: none;', 'rows' => '3'])}}
	<div class="fl" id="statusInfo"></div>
	{{Form::button(Lang::get('site.pages.home.posts.addPosts.button'), ['type' => 'submit', 'class' => 'btn btn-success fr', 'onclick' => 'Posts.addPosts()'])}}
	<div class="clearfix"></div>
</div>

JS:

function Posts(){

	this.addPosts = function(){
		var textPost = $("#addPosts").val();
		var countTextPost = textPost.length;
		var statusInfo = $("#statusInfo");

		if(countTextPost < 1){
			$(statusInfo).html('<div class="text-info">Вы не ввели ни чего!</div>');
		}else if(countTextPost < 5){
			$(statusInfo).html('<div class="text-info">Слишком мало символов!</div>');
		}else if(countTextPost >= 5){
			$(statusInfo).html('<div class="text-success">Всё готово!</div>');

			$.ajax({
				url: 'posts/addpost',
			 	type: 'POST',
			 	dataType: 'json',
			 	data: {"textPost": "textPost"},
			 	complete: function(xhr, textStatus){
			    	//called when complete
			    	console.log(xhr);
			  	},
			  	success: function(data, textStatus, xhr){
			    	//called when successful
			    	console.log('Success');
			  	},
				error: function(xhr, textStatus, errorThrown){
					//called when there is an error
					console.log('Error');
				}
			});
			
		}
	};
}

var Posts = new Posts();

Уже какой час бьюсь об стену, помогите пожалуйста!

И ещё один вопрос, а как сделать CSRF защиту при AJAX?

Не в сети

#2 10.11.2015 23:15:13

zpnick

Re: Ошибка при отправки AJAX'а.

dima9595 пишет:

И ещё один вопрос, а как сделать CSRF защиту при AJAX?

Вариантов много, мож его закинуть куда желаешь, но
наверно самый популярный способ добавить в <head> тег <meta>, типа
<head>
<meta name="_token" content="{!! csrf_token() !!}">
....
</head>

Потом в js получаешь его
var token  = $('meta[name=_token]').attr('content');

Ну и формируешь его в данные, в твоём случае
var data = {};
data['_token'] = token;
data['textPost']  = $("#addPosts").val();

и закидываешь в свою функцию .ajax()
$.ajax({
      ...
        data: data,
     ...
});

#3 11.11.2015 12:28:32

Re: Ошибка при отправки AJAX'а.

Понятно, а что на счёт отправки JS? Есть мысль как исправить?

Не в сети

#4 11.11.2015 13:43:44

Re: Ошибка при отправки AJAX'а.

function red_phone(){
        dan = "roditel="+$('#roditel').attr("value")
            +"&fio="+$('#fio').val()
            +"&ded="+$('#ded').val()
            +"&visible="+$('#visible').val()
            +"&doljnost="+$('#doljnost').val()
            +"&cabinet="+$('#cabinet').val()
            +"&raboch_tel="+$('#raboch_tel').val()
            +"&sot_tel="+$('#sot_tel').val()
            +"&email="+$('#email').val()
            +"&tel2="+$('#tel2').val()
            +"&fax="+$('#fax').val()
            +"&iin="+$('#iin').val();
        $.ajax({
                type: "POST",
                url: "{{ $root_url }}/struct/redphone",
                data: dan,
                success: function(htmt){
                console.log('Success');
                }
            });
    };

Не в сети

Подвал раздела