Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Доброго времени суток! Начал делать отправку сообщения по 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?
Не в сети
И ещё один вопрос, а как сделать 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,
...
});
Понятно, а что на счёт отправки JS? Есть мысль как исправить?
Не в сети
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');
}
});
};
Не в сети
Страницы 1