Динамическая вставка HTML в View через AJAX с JS Array в LARAVEL - PullRequest
0 голосов
/ 19 марта 2019

Привет, я новичок в Laravel, когда у меня есть такая ситуация: у меня есть HTML-форма, и я загружаю некоторый HTML-код, такой как "partal.blade.php ", используя AJAX в той же форме, которая отлично работает со статическим HTML, но

Я хочу отправить массив объектов JS с помощью AJAX-запроса на динамическую загрузку содержимого HTML, например: Выпадающий в той же форме

Может ли кто-нибудь подсказать мне, как я могу передать массив JS в этот фрагмент HTML, чтобы я могВизуализируйте этот массив в «part.blade.php »

вот мой код

это основная форма HTML и массив, который я хочу передать с этим запросом AJAX

var dataArray = $('#data1').val();

код, включенный, наконец, в страницу формы HTML

$.ajax({                
            url: "add-property/residential",
            type: 'GET',
            dataType: 'html',
            data: { dataArr: dataArray },
            contentType: false,
            processData: false,
            success: function(response) {
                console.log(response);
                $('#dynamicForm').html(response);
                //alert(response);
            },
            error: function(response) {
                console.log(response);
                alert('Error....!');
            }
        });

вот мой маршрут

Route::any('admin/add-property/residential',function() { return view('admin.residential'); });

все, что я хочу получить, это массив JS в этом фрагменте HTML, который динамически загружается

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Если вы хотите вернуть содержимое view() в запрос AJAX, вы можете сохранить представление как переменную и вернуться в ответ JSON:

public function apiResponse(){
  $html = view("admin.residential")->render();

  return response()->json(["html" => $html]);
}

В вашем запросе AJAX вы можете получить доступ к этому как response.html:

success: function(response) {
  $("#dynamicForm").html(response.html);
}

Чтобы передать переменную из AJAX в представление, вы можете использовать объект request. В верхней части вашего routes/api (или routes/web.php, в зависимости от того, что вы используете) добавьте use Illuminate\Http\Request;, затем в своем маршруте введите это в функцию:

<?php
use Illuminate\Http\Request;
...
Route::any('admin/add-property/residential',function(Request $request){ 
  ...
});

Не так, чтобы $request был доступен, вы можете получить доступ к данным, отправляемым в запросе AJAX через $request->input("dataArr");, и передать их в частичное представление, используя ->with();:

Route::any('admin/add-property/residential',function(Request $request){ 

  $dataArr = $request->input("dataArr");
  $html = view("admin.residential")->with(["dataArr" => $dataArr])->render();

  return response()->json(["html" => $html]);
});
0 голосов
/ 19 марта 2019

Согласно это

Вместо return view('admin.residential');

Вам нужно сделать это: return (string) View::make('admin.residential');

Редактировать

Если вы хотите получить данные из ajax, а затем загрузить представление, вы можете сделать что-то вроде этого:

Импорт Request.

use Illuminate\Support\Facades\Response;

Установите свою точку поворота на определенную method на controller.

Route::any('admin/add-property/residential',"YourController@returnView");

Сделайте ваши function для обработки данных

public function returnView(Request $request){
    $data = $request->all(); // Here you will have all the data you send via AJ
    //Make sure the $data has all the necessary parameter to load the view
    $view = View::make('my_view', $data);//Here you will pass the data to the view
    return response()->json(["html" => $$view->render()]); // Using @TimLewis return
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...