如何从一个 blade 视图重定向到另一个 blade 视图,并将动态生成的变量传递给它?

How to redirect from one blade view to another blade view, and pass dynamically generated variable to it?

在我看来,让我们称之为 View-A,我在提示中从用户那里获得输入并将其分配给一个变量,然后我需要在浏览器中加载另一个视图,比如视图 B,而将那个变量传递给它。

比如说,在我的 viewA.blade.php 中,我已经获取了用户的输入并将其分配给变量 usersInput。现在我需要将它发送到视图 B,其在 web.php 中的路由定义在 Route::get('editRecord', 'MyController@displayEditRecordView')->name('editRecordFormView');.

问题是如何在浏览器中加载 route(editRecordFormView) 并将 usersInput 变量传递给它,从 blade 视图中编写的 javascript?


@Tushar 在我的ViewA.blade.php:

$.ajax({
    url: url_editRecordView.url,
    data: {
        usersInput: dataToSend.usersInput,
    },
    method: "get",
    cache: false,
    success: function (dataReturned, stringStatus, jqXHR) {
        console.log("dataReturned from mYController.displayEditRecordFormView:-");
        console.log(dataReturned);//check
        console.log("Type of dataReturned:-" + typeof dataReturned); //SAME DATA COMES BACK, AS THE DATA I SENT
    },
    error: function (jqXHR, stringStatus, stringExceptionThrown) {
        alert("Error! status: " + stringStatus + " ExceptionThrown: " + stringExceptionThrown);//check
    }
});

在我的控制器中:

public function displayEditRecordFormView (Request $request) {
    error_log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");//check
    error_log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");//check
    $title= $request->input('usersInput');
    error_log("In displayEditRecordFormView: title: ".$title);//check
    $allPaintingsArray = $this->getAllPaintingsArraySanitized();
    $data = [
        "allPaintingsArray"=>$allPaintingsArray ,
        "title"=>$title
    ];

    return view("paintings.editRecordForm")->with("allGoodData", $data);
}

你可以利用AJAX。只需为用户提供输入时设置一个事件处理程序,并通过 AJAX 将包含用户输入的请求发送到 View-A 控制器中的方法,然后您可以从那里重定向到 View-B 以及值你从请求中得到的。

已编辑

不要使用 view() 方法,而是尝试使用 redirect() 方法,如下所示:

return redirect()->route('editRecordFormView', ['input' => 'userInput']);

要了解有关重定向的更多信息,请参阅 this

而不是 AJAX 调用为什么不使用这样的东西:

var url = "/editRecord?usersInput=dataToSend.usersInput;
window.location.href = url;

在控制器中捕获变量:

$title= request()->filled('usersInput');// or find a way according to Laravel version