Laravel5とjQuery3.4.1を使用したサービスを作り、ローカルでは正常に動作することを確認し、herokuでデプロイしました。
しかし、ローカルではjQueryによるajaxのレスポンスが帰ってくるのに、heroku上ではajaxのレスポンスが帰ってきません。
ローカルでは登録したレコードが帰ってくるのですが、herokuでは「The request has no response data available」と表示され、レコードが表示されません。
リンク(画像):ローカルでのajaxのレスポンス
リンク(画像):herokuでのajaxのレスポンス
また、herokuでは以下のように、ajax/、ajaxと2つ存在していること、前者のステータスコードが301になっているのも不思議です。(他のステータスコードは200です、ローカルでは全て200です)。
これはどうしてでしょうか?
また、どうすればローカルでajaxリクエストした時と同じようにレスポンスを取得できるのでしょうか?
以下にコードを一部載せます。
ajaxリクエストするjsファイル
jsコード
// ajaxでstoreメソッドを実行する関数 const ajaxStore = (taskTemp) => { // AjaxでTasksControllerのstoreメソッドを呼ぶ $.ajax({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, url: 'ajax/', type: 'POST', data: {'task':taskTemp, '_method': 'POST', status:"create"}, }) // Ajaxリクエストが成功した場合 .done(function(data) { console.log("add success"); console.log("data",data); let temp = JSON.stringify(data); document.getElementById("js-getTasks").setAttribute('data-task', temp); }) // Ajaxリクエストが失敗した場合 .fail(function(data) { console.log("add error"); alert(data.responseJSON); }); };
Laravelのコントローラー
TasksController@ajaxCRUD
public function ajaxCRUD(Request $request) //Request $request { //タスクを追加する処理 //['project_id', 'parent_id', 'project_flag', 'content', 'selected']を送信する if (\Auth::check()) { $status = $request->status; // タスクを新規登録する処理 if ($status === 'create') { $user = \Auth::user(); $task = $request->task; $project_id = $task['project_id']; $project = $user->projects()->get()->find($project_id); $project->tasks()->create([ 'parent_id'=>$task['parent_id'], 'project_flag'=>$task['project_flag'], 'content'=>$task['content'], 'selected'=>$task['selected'] ]); // 作成後の全タスクを返す $tasks = $project->tasks()->get(); return $tasks; } } }
追記:三枚目の写真のURLがhttpになっているのがおかしい気がします。
本来はhttpsだからです。httpsなのにhttpにリクエストしてるからレスポンスがからなのかもしれません。
しかし、ajaxのリクエストでhttpsを指定しつつajax/にリクエストできるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。