2017-08-02 124 views
1

您好再次SO社區後填充視圖與數據庫中的信息。我一直在開發一個網站,到目前爲止它的情況非常好。不過今天一整天尋找一個解決方案,我無法理解,也沒有找到合適的路徑是什麼?如何AJAX請求

我想點擊一個按鈕和一個配置文件頁面,您可以編輯的字段出現後。我可以重定向到我想要的頁面,但我不知道如何發送用戶數據,以便填充字段。

這裏是我的看法

<button class="btn btn-xs btn-warning dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false" style="border-color: black" id="dados_{{ $user->username }}"> Alterar Dados Pessoais 

<i class="glyphicon glyphicon-cog"></i> 

</button> 

這裏我的按鈕代碼按鈕AJAX請求處理

if((this.id).indexOf("dados") != -1){ 

    var content = this.id.replace("dados_", ""); 

    $.get('callPermissions', {usernameSend:content, '_token': $('meta[name=csrf-token]').attr('content'),}, function(data){ 

    window.location.replace('settings'); 

}); 

這裏是我的callPermission控制器

public function callPermissions(Request $request) 
{ 

    if($request->ajax()){ 

    $usernames = Input::get('usernameSend'); 

    if(isset($usernames)){ 

     $user = User::Where('username', '=', $usernames)->first(); 

     $returnHTML = view('userOptions.settings')->render(); 

     return view('userOptions.settings'); 

    }else{ 

     Log::warning("Username não existe na base de dados."); 

    } 

    } 

} 

,在這裏我的設置控制器

public function settings(Request $request) 
{ 

    return view('userOptions.settings'); 

} 

這裏是路線

Route::get('/callPermissions', '[email protected]'); 

我知道控制器是錯誤的,從我讀過,我應該驗證是否AJAX是成功的,如果它是處理我的AJAX請求。但從我所瞭解的情況來看,我根本沒有使用控制器(儘管它已經到了那裏)。我應該如何發送用戶信息(在這種情況下是用戶名,然後我可以從數據庫中獲取所有信息),然後將其發送到視圖?我一直在尋找,並在控制器不工作,嘗試的東西,不工作...因爲回報視圖(「your_view」)

很抱歉,如果我一直困惑,如果你需要更多的信息,隨便問!

感謝您的幫助!

編輯:如果我回到這個控制器

return view('userOptions.settings', compact('user')); 

上,做一個與Ajax請求的節目上面更換和添加​​這我得到的設置視圖

<p> {{ $user->name }} </p> 

以下錯誤未定義的變量:用戶(查看:C:\ wamp64 \ www \ siteXL \ ideiasxl \ resources \ views \ userOptions \ settings.blade.php)

反正有一個緊湊都發送參數或者我需要通過鏈接發送?正在避免在網址上顯示用戶名。

EDIT2:爲了進一步澄清,此按預期工作

<button onclick="window.location='{{url('/settings/' . $user->username)}}'" type="button" id="dadosPessoais" class="btn btn-default">Alterar Dados Pessoais 

<i class="glyphicon glyphicon-wrench"></i> 

</button> 

但我儘量不通過URL發送ID和用戶名。

如果這無法實現的情況是好的,但如果有一種方法,我無法找到它,這就是爲什麼我問

回答

2

我認爲你必須在路徑中添加參數和接收數據控制器功能。我會做這樣的事情:

路線:

Route::get('/callPermissions/{user}', '[email protected]'); 

控制器:

public function callPermissions(Request $request, $user) 
{ 
//get data related to $user 
} 

Ajax調用:

$.get('callPermissions/'+userIdVariable, {usernameSend:content, '_token': $('meta[name=csrf-token]').attr('content'),}, function(data){ 

    window.location.replace('settings'); 

}); 

這將通過路由發送用戶ID。

要使用JavaScript獲取用戶標識,可以在刀片文件中創建一個隱藏字段,並將用戶標識設置爲值。例如,如果你使用表單輔助函數:

var userIdVariable = $('#js-user-id')->val(); 
+0

你會如何向用戶發送ID(例如):

{{ Form::hidden('user_id', $user->id, array('id' => 'js-user-id')) }} 

然後,在JavaScript中,你可以使用像這樣獲得的價值到Ajax調用的設置頁面?我知道如何通過控制器做到這一點,但因爲我使用AJAX請求,返回**視圖('path.to.settings',compact('user')** - 例如)不起作用!我想發送到設置視圖的用戶ID 我將更新主帖 感謝您的答案,雖然 – AimForNuts

+0

一種方法是使用窗體中的隱藏字段,並將值設置爲用戶定義的值, > id。然後,你可以使用jQuery來獲得該字段的值,例如,我將用一個建議來編輯答案 – Laerte

+1

噢,那是有道理的!謝謝你的幫助 – AimForNuts