Laravel - Ajax (GET): как отправить данные json с контроллера обратно для просмотра

У меня здесь проблема. Я пытаюсь отправить конкретную дату на контроллер (чтобы создать предложение where и отправить его обратно в представление), но я думаю, что это даже не требуется с контроллером, поскольку вы также можете поместить предложение where в представление.

Однако обе части для меня как бы невозможны, все перепробовал, но безрезультатно.

мой код ajax / view ...

$('.dates').click(function(){
    var date = $(this).attr('value');

    $.ajax({
        type: 'GET',
        data: {
            date: date
        },
        success: function(data){
            console.info(data.data);
        },
        error: function(xhr){
            console.info(xhr.responseText);
        }
    });
});

console.info(data.data); работает, он выводит дату дня щелчка, и мне нужен этот вывод (из JS) в Laravel (PHP) where, чтобы получить данные из базы данных.

мой код контроллера ...

public function rooster(Request $request)
{
    $currentUser = Auth::user();
    $schedules = Schedule::all();

    $data = $request->date;
    if ($data){
        return response()->json(['msg'=>'Updated Successfully', 'success'=>true, 'data'=>$data]);
    }

    $dataa = $data;
    return view('pages.klant.rooster')->withDataa($dataa)->withSchedules($schedules);
}

мой маршрут:

Route::get('klant/rooster', 'KlantController@rooster');
Route::get('klant/kalender', 'KlantController@getData');

а затем, на мой взгляд, у меня есть что-то вроде этого, но, очевидно, это не работает, поскольку переменная не отправляется ... (без ошибок)

@foreach ($schedules->where('datum', $dataa) as $value)
    {{ $value->user->name }}
@endforeach

Я надеюсь, что здесь мне кто-нибудь поможет ...

Примечание: у меня нет такого хорошего опыта в JSON / AJAX / Laravel, я новичок.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
11 298
3

Ответы 3

Во-первых, в вашем запросе AJAX вы не указали route (или URL-адрес) для отправки данных:

$.ajax({
    type: 'GET',
    url: '/rooster/filter',
    data: {
        date: date
    },
    success: function(data){
        console.info(data.data);
    },
    error: function(xhr){
        console.info(xhr.responseText);
    }
});

Вам нужно будет добавить route в ваш файл routes/web.php. Что-то вроде:

 Route::get('/rooster/filter', 'MyController@rooster');

Во-вторых, в вашем методе rooster вы должны передавать обратно JSON

return response()->json([
    'data' => $data,
    'schedules' => $schedules
]);

Если метод rooster не тот, которому вы должны отправлять запрос AJAX, просто убедитесь, что метод, к которому он должен перейти, возвращает ответ JSON.

Затем вам нужно будет использовать JS для обновления представления, используя response, указанный в

success: function(data){
    console.info(data.data);
    console.info(data.schedules);
},

Возможно, используйте шаблоны на основе JS, такие как https://github.com/janl/mustache.js/

Как я уже сказал, часть javascript / ajax работает, сообщение об успешном завершении выводится в консоль, я не использовал URL-адрес, потому что в моем маршруте он у меня уже есть, мне нужно получить переменную даты в представлении для извлечения данных из база данных.......

Swiggity 19.06.2018 13:21

вам не хватает параметра url для ajax.

Для подсказок: вы можете создать новое представление, имеющее вашу html-логику с предложением where, и включить его в главное представление ... и отобразить его с помощью view('your-view-path')->render() внутри вашего петух(). А также

Не стесняйтесь спрашивать что угодно .. ура.

Я совершенно не знаю, как мне это делать, я много раз пробовал render () в одном и том же виде, но это не сработало.

Swiggity 19.06.2018 13:20

но проблема не в этом, я хочу использовать эту переменную в моем предложении laravel where (от js до laravel) idk how.

Swiggity 19.06.2018 13:27

@Swiggity вы указали URL-адрес для запроса ajax?

Kul 19.06.2018 18:58

да, я добавил его сейчас, но, как я уже сказал, работает ajax / laravel, из ajax он отправляет дату в контроллер, возвращает ее в представление и выводит правильную дату. Я хочу использовать эту дату в предложении where, это моя единственная проблема, и я совершенно не знаю, как это сделать. Пробовал с jquery, но застрял в отношениях с базой данных (не знаю, как сделать user_id-> user-> name в json ...)

Swiggity 20.06.2018 12:08

Сделайте свою часть в контроллере и визуализируйте ее для просмотра

Kul 23.06.2018 18:49

$('.butto').click(function(){
    var date = $(this).attr("data-id");
    //var date = $(this).attr('value');
$.ajax({
  url: '/ajax/GetContent',
  data: { date: date },
  type: "GET",  
  success: function(data){ $data = $(data);      
  $('#clear').hide().html($data).show();
   }
  });
});

//controller
public function index3(Request $request){
        //$search = 'fffffffff';
        //$search = $request->date;
        // $search = $request->input('search');
        $user = Auth::user();
        $id = $request->date;
        //$search  = moneyuser::where($where)->first();
        $search = moneyuser::where('name', $user->name)->where('email', $user->email)->where('id', $id)->paginate(3);

        return view('student.lis')->with('search', $search);
    }
    
    // Rout
    // change Page by Ajax
Route::get('/ajax/GetContent', array(
    'uses'  =>  'StudentController@index3'
  ));
 
<a data-id = "{{ $student->id }}" class = "btn btn-primary butto">view</a>

Пожалуйста, отредактируйте и добавьте текстовое объяснение, а не только код.

decadenza 31.07.2020 17:34

Другие вопросы по теме