2015-10-31 25 views
1

我正在構建一個應用程序,供用戶上傳項目。我正在實施一個系統,用戶可以「喜歡/不喜歡」其他項目。我正在嘗試使用AJAX調用來保存喜歡。用戶可以像一個項目(/項目/ {ID})Laravel 5.1通過ajax調用將數據保存在數據庫中

的詳細信息頁面我有一個表的用戶,項目和喜歡的項目。我的計劃是將喜歡的東西保存在喜歡的表格中,以便記錄如下所示:id,user_id,project_id。在未來我可以做一個統計查詢,並找出每一個項目有多少喜歡了,等

出於某種原因,當我點擊按鈕,像我的應用程序被卡住,並保持加載,直到它崩潰。

我的文件: Ajax調用

$(document).ready(function(){ 
     console.log("js loaded"); 
     $('#likeform').on('submit', function(e) { 
      console.log("like submitted"); 
      e.preventDefault(); 

      $.ajax({ 
       url: $(this).parent().attr('action'), 
       type: "post", 
       data: {'_token': token, 'user_id': $('input[name=user_id]').val(), 'project_id': $('input[name=project_id]').val()}, 
       success: function(data){ 
        alert(data); 
       } 
      }) 
     }); 
    }); 

我的形式

{!! Form::open(array('url'=>'projects/'.$project->id.'/like','method'=>'POST', 'id'=>'likeform')) !!} 
    <input type="hidden" id="token" value="{{ csrf_token() }}"> 
    {!! Form::Submit('Like', array('class'=>'send-btn')) !!} 
{!! Form::close() !!} 

我的路線:

Route::get('/', '[email protected]'); 
Route::post('projects/{id}/like', '[email protected]'); 

我在LikeController類似功能:

public function like() 
{ 
    if(Request::ajax()) { 
     $data = Input::all(); 
     print_r($data);die; 
    } 
} 
+0

瀏覽器控制檯在加載時會說些什麼嗎?你檢查了你的laravel.log嗎?提供任何類型的錯誤都會大大提高您獲得正確答案的機會。 – MisterP

+0

我的控制檯沒有任何東西。而且我完全沒有錯誤,這有點煩人。 –

+0

奇怪。無論如何,我沒有測試你的代碼,但是你試圖從表單中檢索一個'action'屬性,而它沒有。你確實設置了一個'url'。我不確定這是你在找什麼,但值得一試。附註:使用「Form」外觀構建表單將自動設置一個隱藏的「標記」字段,因此實際上不需要爲表單添加第二個表單。 – MisterP

回答

0

gets stuck and keeps loading until it crashes

部分可能與該阿賈克斯後預計某種反應的事實,但你是不是在你的控制器響應的。嘗試像

public function like() 
{ 
    if(Request::ajax()) { 
     $data = Input::all(); 
     return Response::json([ 
       'error' => false, 
       'insertedData' => $data 
      ], 200); 
    } 
} 

Remenber to use Response in your controller。現在你回來的東西Ajax調用,你應該能夠訪問$data

success: function(data){ 
      alert(data.insertedData); 
     } 

您是否遇到相同的行爲?如果沒有,你可以繼續前進並執行實際的數據庫插入。

+0

我已經試過你的答案,不幸我仍然遇到同樣的行爲 –

+0

@MoussaChaabar好吧,這變得更奇怪。您應該嘗試在開發人員模式下測試您的代碼,並嘗試瞭解哪些人/哪些人失敗。你的ajax中的幾個斷點稱它是一個好的開始。不過我不明白你爲什麼沒有收到任何錯誤。你可以嘗試在你的ajax中設置一個'error'回調,就像'error:function(data){console.log(data);}'。至少應該告訴我們ajax調用是否實際執行。 – MisterP

相關問題