Emchik
@Emchik
Что-то прикольное сделать могу

Как делать AJAX запрос на одной странице, а получать результат на другой?

Использую AJAX (тип данных JSON) и Laravel.

Написал AJAX запрос, который получает новую запись текущей ленты:
var myJsonData = {
	"_token": "{{ csrf_token() }}",
	id: '{{ $feed->id }}'
};
$.post(
	'{{ route("feed-get-mess", $feed->id) }}',
	myJsonData,
	function(response) {
		$('#AjaxGetMessages').append(response.message);
		console.log(response);
	}
);

Контроллер прост:
public function ajax_mess(Request $request)
{
    $feed_ajax = Feed::findOrFail($request->id);
    $messages_ajax = $feed_ajax->messages()->latest()->first();
    return $messages_ajax;
}

Но публикуются данные в админке. Надо, чтобы во время (или после) публикации, мой ajax запрос срабатывал и выдавал результат для всех на той странице, где отображаются эти данные (то есть на другой странице)

Upd: ИЛИ! Как вызывать этот запрос в контроллере другой странице?
  • Вопрос задан
  • 462 просмотра
Пригласить эксперта
Ответы на вопрос 1
deepblack
@deepblack
Как делать AJAX запрос на одной странице, а получать результат на другой?

Если чисто на AJAX, то нужно переодически опрашивать сервер на предмет получения новых данных.
Например так:
spoiler
function fetchdata(){
 $.ajax({
  url: 'fetch_details.php',
  type: 'get',
  success: function(response){
   // Perform operation on the return value
   alert(response);
  }
 });
}

$(document).ready(function(){
 setInterval(fetchdata,5000);
});

или
spoiler
function fetchdata(){
 $.ajax({
  url: 'fetch_details.php',
  type: 'get',
  success: function(data){
   // Perform operation on return value
   alert(data);
  },
  complete:function(data){
   setTimeout(fetchdata,5000);
  }
 });
}

$(document).ready(function(){
 setTimeout(fetchdata,5000);
});

Либо использовать Websocket.
да в смысле?) Ведь если, к примеру, у 140 людей открыта эта страница, то и у них обновится. Всем же придёт AJAX ответ, так как страница одна.

Так работает Websocket
AJAX ответ прийдёт только на запрос со страницы, если вы его сделаете.

$.post(
  '{{ route("feed-get-mess", $feed->id) }}',
  myJsonData,
  function(response) {
    $('#AjaxGetMessages').append(response.message);
    console.log(response);
  }
);

А это вы POST'ом данные от сервера получаете что-ли? o_O
Обычно это делают GET запросом.
Ответ написан
Ваш ответ на вопрос

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

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