3 回答

TA貢獻(xiàn)1784條經(jīng)驗 獲得超9個贊
在您的控制器中,您缺少第二個參數(shù)。
所以試試這樣:
public function update(Request $request, Client $client)
{
$rules = array(
'client_name' => 'required',
'client_address' => 'required',
'client_bdate' => 'required'
);
$error = Validator::make($request->all(), $rules);
if($error->fails())
{
return response()->json(['errors'=>$error->errors()->all()]);
}
$form_data = array(
'client_name' => $request->client_name,
'client_address' => $request->client_address,
'client_bdate' => $request->client_bdate
);
// You should get your client in variable $client
//Clients::find($request->hidden_id)->update($form_data);
$client->update($form_data);
return response()->json(['success' => 'Data Updated']);
}
另請注意,如果您想讓您的代碼看起來更簡單,您可以像這樣驗證您的請求:
public function update(Request $request, Client $client)
{
$request->validate([
'client_name' => 'required',
'client_address' => 'required',
'client_bdate' => 'required'
])
$client->update($form_data);
return response()->json(['success' => 'Data Updated']);
}
您可以在此處閱讀更多內(nèi)容。
祝你好運(yùn)!

TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
在您的路由文件中刪除 {}Clients/{Client}
或最好將其更改為:Clients/update
,當(dāng)您將 {} 放在一些文本周圍時,您正在綁定一些參數(shù)(實際上是 Eloquent 模型),并且您應(yīng)該在調(diào)用時提供它(提供 ID)路線。

TA貢獻(xiàn)1805條經(jīng)驗 獲得超9個贊
首先,讓我們制定一些約定。
將您的路線定義更改為
Route::resource('clients', 'ClientsCont');
按照慣例,控制器名稱應(yīng)該是駝峰式大小寫并以大寫字母開頭。路由名稱通常是小寫的。
接下來,確保您的控制器文件命名正確ClientsCont.php,并且類名也應(yīng)該是ClientsCont. 最后,您必須為您的update()方法提供第二個參數(shù)以保存要更新的客戶端對象。
客戶端連接.php
namespace App\Http\Controllers;
use App\Client;
class ClientsCont extends Controller
{
// class definition
public function update(Request $request, Client $client)
{
$rules = array(
'client_name' => 'required',
'client_address' => 'required',
'client_bdate' => 'required'
);
$error = Validator::make($request->all(), $rules);
if($error->fails())
{
return response()->json(['errors'=>$error->errors()->all()]);
}
$form_data = array(
'client_name' => $request->client_name,
'client_address' => $request->client_address,
'client_bdate' => $request->client_bdate
);
$client->update($form_data);
return response()->json(['success' => 'Data Updated']);
}
}
現(xiàn)在,正確設(shè)置您的 Ajax 請求。
$('#client_form').on('submit', function(event){
var url;
if($('#action').val() == 'Add')
{
url = "{{ route('clients.store') }}";
}else{
url = "{{ route('clients.update') }}";
}
$.ajax({
url: url,
method: "POST",
data: new FormData(this),
cache: false,
dataType: "json",
success:function(data)
{
var html = '';
if(data.errors)
{
html = '<diV class="alert alert-danger">';
for(var count = 0; count < data.errors.length; count++)
{
html += '<p>' + data.errors[count] + '</p>';
}
html += '</div>';
}
if(data.success)
{
alert("add");
html = '<diV class="alert alert-success">' + data.success + '</div>';
$('#client_form')[0].reset();
$('#table_id').DataTable().ajax.reload();
}
$('#result').html(html);
}
})
return false;
});
通常使用return false;是停止默認(rèn)事件操作和傳播的首選方式。
[return false;]通常出現(xiàn)在 jQuery 代碼中,它阻止瀏覽器的默認(rèn)行為,阻止事件冒泡 DOM,并立即從任何回調(diào)返回。
有關(guān)完整詳細(xì)信息,請參閱此媒體文章。
此外,從您的代碼中,您的某些 ajax 設(shè)置是不必要的,應(yīng)該省略,以便使用它們的默認(rèn)值。對于大多數(shù)表單,這些默認(rèn)值通常就足夠了。
例如,使用jQuery Ajax 設(shè)置processData: false禁用處理表單數(shù)據(jù)并使用toString()對象的方法來形成請求數(shù)據(jù)字符串。
當(dāng)您將數(shù)據(jù)設(shè)置為除 processData 設(shè)置為 false 的字符串以外的常規(guī)對象時,jQuery 不會處理該對象。該對象完全按原樣傳遞給 Ajax 調(diào)用,并像字符串一樣使用。這默認(rèn)調(diào)用 toString 方法并將結(jié)果作為 Ajax 請求中的數(shù)據(jù)發(fā)送到服務(wù)器。
見這對完整的描述。確保您需要此設(shè)置,否則將其全部丟棄。
您可能需要放棄的另一個 Ajax 設(shè)置是contentType: false,除非您有充分的理由進(jìn)行設(shè)置。
- 3 回答
- 0 關(guān)注
- 282 瀏覽
添加回答
舉報