私は単にAjaxフォームを使用して、Javascriptでユーザーをリダイレクトします。
あなたのフォームにID
<form id="myForm" method="POST" action="{{ route('your.route') }}">
...
...
<button type="submit">Submit the Form</button>
を与え、このフォームのAjax
<script>
$('#myForm [type="submit]').click(function(e){
e.preventDefault();
var form = jQuery(this).parents("form:first");
var dataString = form.serialize();
var formAction = form.attr('action');
$.ajax({
type: "POST",
url : formAction,
data : dataString,
success : function(data){
var url = $.parseJSON(data.responseText);
console.log(data);
// Redirect to a new tab with the given url
window.open(url.success, '_blank');
},
error : function(data){
var error = $.parseJSON(data.responseText);
console.log(error);
// Do what ever you want with an Error Message
alert(error)
}
},"json");
});
</script>
オーケーで作業を行うことにしてください - だからフォームが成功メッセージを受信した場合、success
関数が実行されますそれ以外の場合はerror
機能です。
は今すぐリクエスト
public function generateURL(Request $request) {
$screenRow = \App\ScreenshotRow::find($request->input('row_ID'));
$baseURL = $screenRow->BaseURL;
$screenshot = \App\Screenshot::where('Setname', '=', $screenRow->Setname)->get();
$pageURL = $screenshot[0]['PageURL'];
// Return a JSON Success Message with a Success HTTP Status Code
if ($baseURL == "") {
return response()->json(['success' => $PageURL], 200);
}
// Return a JSON Error Message with a Error HTTP Status Code
else
return response()->json(['error' => $baseURL], 400);
}
を扱うバックエンド・コントローラーに行くことができますあなたのバックエンドは、成功メッセージに与えられたURLに基づいて、新しいタブにリダイレクトと呼ばれているAjaxのフォームの成功の機能をスローした場合にどのあなたはあなたのバックエンドコントローラ成功応答を渡しました。
NOTE
Ajaxリクエストにtokenmismatchexception
を避けるために、あなたはあなたの<head>
にcsrf_token
にごmeta
セクションを追加する必要があります。
<meta name="csrf-token" content="{{ csrf_token() }}">
、それはまだMethodNotAllowedHttpExceptionを与えるすべてのフォーム要求
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
にこの
csrf_token
を取得。私もGETリクエストでこれを試してみましたが、問題はありません。 –私は単にAjaxフォームを使用し、window.open(url、 '_blank')でユーザーをリダイレクトします。 – bobbybackblech
それは良い提案です。ありがとう! –