#php #jquery #ajax #laravel
#php #jquery #ajax #laravel
Вопрос:
У меня проблема с преобразованием массива в JSON в laravel с использованием ajax-запроса. Вот мой код
AJAX-код:
data = {
clients: clients,
_token:$('input[name="_token"]').val()
}
$.ajax({
url: '{{URL::to('/url')}}' '/' trainer_id,
type: 'POST',
dataType: 'json',
data: data,
success: function (response) {
}, error: function (response) {
}
});
клиенты — это массив, и у него есть идентификаторы. Это выглядит как: клиенты:
Массив[3]
0:859
1:883
2:885
Код контроллера Laravel:
public function myCode($id, Request $request) {
dd(json_encode($request->clients));
}
Ответ кода : «[«859″,»883″,»885″]».
Но я хочу это : [«859″,»883″,»885»].
Кто-нибудь знает решение?
Заранее спасибо!
Комментарии:
1. Похоже,
$request->clients
что это уже JSON.2. Нет, это массив, который выглядит так: array:3 [ 0 => «859» 1 => «883» 2 => «885» ]
3. Я добавил ответ, который должен сработать. 🙂
4. json_encoding для массива не приведет к заключению строки в кавычки. Но json_encode-ing этой строки, бы. Похоже, что где-то он получает двойное кодирование.
Ответ №1:
измените это на
public function myCode($id, Request $request) {
return response()->json($request->clients);
}
вы также можете отправлять дополнительные параметры
public function myCode($id, Request $request) {
return response()->json(['data'=>$request->clients,'status'=>true]);
}
Комментарии:
1. Он возвращает массив, и я хочу, чтобы он был в формате json
Ответ №2:
json_encode()
Возвращает строку. Просто используйте dd($request->clients);
Ответ №3:
в javascript успешный обратный вызов
JSON.parse("["859","883","885"]") = [859,883,885];
JSON.parse(response); // in your case
Ответ №4:
public function myCode($id, Request $request) {
return response()->json($request->clients);
}
Ответ №5:
Проблема здесь:
public function myCode($id, Request $request) {
dd(json_encode($request->clients)); // There is no use of dd(), dd() is used for debugging purpose
}
измените его на:
public function myCode($id, Request $request) {
return response()->json($request->clients); // We have to return this data as json that's why we use json() here
}
Редактировать: Для отправки дополнительных данных создайте массив и передайте $request->clients
его один из ключей и верните этот массив как:
return response()->json($your_array);
Комментарии:
1. Да, я могу сделать так, но я хочу передавать клиентов в одном json, поэтому я не могу сделать так
2. Я вас не понимаю?
3. Это не мой последний ответ для отправки. Мне нужно передать также другие данные в ответ, и я использую guzzle, поэтому я передаю их следующим образом: $RequestOptions = [‘form_params’ => [ «trainer_id» => $ param, «client_ids» => $ clientArr ]]; . Итак, как я могу использовать response()-> json() с ним??
Ответ №6:
вот описание использования JSON_FORCE_OBJECT
json_encode($request->clients, JSON_FORCE_OBJECT)