Я новичок в Javascript. Я хочу сделать ajax-обновление в моей форме. Все работает нормально. как только обновление будет выполнено, значение будет обновлено в базе данных. где возникает проблема, когда я пытаюсь обновить его в представлении. Вот мой контроллерВозвращение ответа JSON от контроллера в laravel
public function updatePost(Request $request)
{
$post = $request->all();
$val = \Validator::make($request->all(), [
'client_id' => 'required',
'client_name' => 'required',
'client_business' => 'required',
'client_ref' => 'required',
'gmail_mail' => 'required',
'gmail_pass' => 'required',
'client_dob' => 'required',
'client_addr' => 'required',
'client_no1' => 'required',
'client_ref' => 'required',
'domain_name' => 'required',
'domain_p_date' => 'required',
'domain_reg' => 'required',
'domain_ex_date' => 'required',
'domain_acc_email' => 'required',
'domain_acc_pass' => 'required',
'domain_id' => 'required',
]);
if ($val->fails()) {
return redirect()->back()->withErrors($val->errors());
}
else {
$data = array(
'client_id' => $post['client_id'],
'client_name' => $post['client_name'],
'client_business' => $post['client_business'],
'client_ref' => $post['client_ref'],
'gmail_mail' => $post['gmail_mail'],
'gmail_pass'=> $post['gmail_pass'],
'client_dob'=> $post['client_dob'],
'client_addr'=> $post['client_addr'],
'client_no1'=> $post['client_no1'],
'domain_name' => $post['domain_name'],
'domain_p_date' => $post['domain_p_date'],
'domain_reg' => $post['domain_reg'],
'domain_ex_date' => $post['domain_ex_date'],
'domain_acc_email' => $post['domain_acc_email'],
'domain_acc_pass' => $post['domain_acc_pass'],
'domain_id' => $post['domain_id'],
);
//var_dump($data);
$update_data = domain_details::where('domain_id', $post['domain_id'])
->update($data);
if ($update_data) {
$new_data = domain_details::where('domain_id',$post['domain_id'])->get();
return response()->json(['client_id'=> 'johncena'],200);
}
else
{
return redirect()->back()->withErrors($val->errors());
}
}
это данные, которые я получаю из формы и обновления. Обновление в Databse отлично работает. Здесь проблема возникает
if ($update_data) {
$new_data = domain_details::where('domain_id',$post['domain_id'])->get();
return response()->json(['client_id'=> $new_data->client_id],200);
JSon ([ 'client_id' => $ new_data-> client_id], 200); Если я передаю только строку, она отлично работает, как j son (['client_id' => 'John Doe'], 200);.
Другая проблема, когда я вижу консоль. Если я попытаюсь обновить форму без изменения чего-либо, это вызовет ошибку внутреннего сервера 500. Вот мой код Javascript, который обрабатывает ответ от контроллера. Иногда строка изменяется на John Doe, и в большинстве случаев я получаю 500 внутренних ошибок сервера.
$('#update-modal').on('click',function(){
$.ajax({
type : "get",
url : updateURL,
data : { client_id : $('#client_id').val(),
client_name : $('#client_name').val(),
client_business : $('#client_business').val(),
client_ref : $('#client_ref').val(),
gmail_mail : $('#gmail_mail').val(),
gmail_pass : $('#gmail_pass').val(),
client_dob : $('#client_dob').val(),
client_addr : $('#client_addr').val(),
client_no1 : $('#client_no1').val(),
domain_name : $('#domain_name').val(),
domain_p_date : $('#domain_p_date').val(),
domain_reg : $('#domain_reg').val(),
domain_ex_date : $('#domain_ex_date').val(),
domain_acc_email : $('#domain_acc_email').val(),
domain_acc_pass : $('#domain_acc_pass').val(),
domain_id : domain_id,
_token : token
}
})
.done(function(msg){
$(client_id_element).text(msg['client_id']);
});
});
Я знаю, что чего-то не хватает. Я не могу понять, что это такое. Заранее спасибо
Он работал как шарм, я думал, что я ошибаюсь с данными JSON. и синтаксис –
Помните, что когда вы используете 'get()' правильный способ доступа к результатам запроса, это использовать цикл по всей коллекции и работать с каждым объектом или с помощью индексной нотации, такой как '$ new_data [0] -> client_id' что плохо. Если вы уверены, что объект, который вы пытаетесь получить из своего БД, имеет уникальное свойство, например 'id', вы можете просто использовать' first() 'для получения только одного элемента. Я рад, что это сработало :) – Khallister