2015-11-02 61 views
1

我幾乎是編程初學者。自從幾周以來,我一直在使用Laravel框架。到目前爲止,我正在使用ajax並通過路由重定向到控制器中的功能。有人告訴我,在Views中使用重定向和許多Ajax是錯誤的。那麼我該如何以適當的方式調用這些函數和所有機制呢?我不是第一次閱讀文檔,但我仍然沒有得到它。有人可以向我解釋一下嗎?Laravel區分腳本力學調用

這是一個示例,我如何在控制器中使用視圖。 viewfile.blade.php:

$.ajax({ 
    type: "POST", 
    url: "/ineedthisfunction", 
    data: { 

    }, 

     success: function(msg) { 
      alert(msg); 
     }, 

     error: function(error) { 
      alert('error'); 
     } 
}); 

路線:

Route::post('/ineedthisfunction', '[email protected]'); 

控制器:

public function thisfunction(){ 
return "some returned value from script"; 
} 

我這樣做,每次我需要使用任何PHP代碼。或者我正在將它寫入視圖。他們告訴我都錯了。那我該怎麼做?

有時候不是阿賈克斯我只是做:「標題(」位置:/ ineedthisfunction「);但我認爲這是可怕的想法

+0

請提供您的代碼示例,說明您的問題。很難說清楚你在問什麼 –

+0

@watcher好的,對不起。已編輯 – divHelper11

回答

1

你提到你的問題的重定向,但我看不出有什麼。在你的控制器方法中重定向,一般來說,如果你打算做一個AJAX調用,那麼發送一個重定向響應對你不會有什麼好處,瀏覽器本身不會收到重定向並導航用戶新的頁面,你的Javascript回調將被觸發,狀態代碼爲301(或302,具體取決於)。採取這種方式,重定向響應AJAX請求沒有任何意義。

你有一個機會在你的控制oller方法做出選擇,但是,返回什麼。請求是AJAX請求嗎?然後返回東西。如果沒有,那麼你可以輕鬆地返回您的重定向:

use Illuminate\Http\Request; 

// ... 

public function thisFunction(Request $request) 
{ 
    if($request->wantsJson()) { 
     // Return data to ajax request 
     return response()->json(['key' => 'value']); 
    } 

    return redirect()->to('/some/url'); 
} 

如果沒有你想完成我恐怕不能更具體一些什麼更多的上下文。

+0

謝謝您的回答!我想我的問題很混亂。我的意思是我不知道如何在框架上工作。我知道在視圖中我們有意見,在控制器中是腳本和機制。由於我需要使用這些腳本和函數每隔幾條路線,我將它們寫入View文檔或者調用它們,沒有人知道爲什麼通過AJAX或任何其他方法,因爲我不知道如何以其他方式。這對我來說似乎很簡單。視圖> AJAX>路線>控制器>答案。但我過度使用它,當它不需要的時候這樣做,我不知道任何其他方式 – divHelper11