laravel - добраться до json на контроллере с помощью ajax [закрыто]

avatar
Hakan Gundogan
8 августа 2021 в 18:28
37
2
-1

Это мой ajax:

$.ajax({ 
    url: '{{ route('add.orders') }}',
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    data: JSON.stringify({ sepet }),
    cache: false,
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    success: function(data) {
        console.log(data);
    }
})

Это страница моего контроллера:

public function addOrders(Request $request) {
    $test = $request->sepet;
    
    return $test;
}

И я вижу данные, проблем нет. Журнал выглядит следующим образом:

enter image description here

Но проблема в том, что в контроллере я хочу получить первый элемент массива id.

public function addOrders(Request $request) {
    $test = $request->sepet[0];

    return $test;
}

Это работает, проблем нет. Я получаю этот журнал:

enter image description here

Но если я использую:

public function addOrders(Request $request) {
    $test = $request->sepet[0]->id;

    return $test;
}

Это не работает. Как я могу связаться с id на контроллере?

Мне нужно вставить в базу данных следующий json, например food_price, id, foot_title.

Как добраться до них?

Источник
matiaslauriti
8 августа 2021 в 18:41
1

И в чем ошибка? В чем ваша настоящая проблема?

A.A Noman
8 августа 2021 в 18:43
0

Вы хотите, чтобы в вашем контроллере было только id?

Hakan Gundogan
8 августа 2021 в 18:43
0

Настоящая проблема в том, что я не могу получить food_price на странице контроллера. Я должен вставить его в базу данных, но не могу этого сделать

Hakan Gundogan
8 августа 2021 в 18:45
0

Нет, я не хочу только id. Мне нужны все элементы первого массива. Пример: $id = $request->sepet[0]->id; $price = $request->sepet[0]->food_price

Nico Haase
8 августа 2021 в 18:54
0

Что вы пытались решить проблему? Где ты застрял? Что означает «получить этот журнал»?

Ответы (2)

avatar
N69S
8 августа 2021 в 18:54
2

Поскольку данные поступают из запроса, они будут в ассоциативном массиве, а не в объекте.

public function addOrders(Request $request) {
    $test = $request->sepet[0]['id'];

    return $test;
}

если вы хотите зациклить все

public function addOrders(Request $request) {
    foreach($request->sepet as $sepet) {
        $id = $sepet['id'];
        $foodTitle = $sepet['food_title'];
        //...
    }
}
avatar
A.A Noman
8 августа 2021 в 18:47
2

Вы должны использовать приведенный ниже код

$testData = json_decode($request->sepet,true);

foreach($testData as $data){

    $id = $data->id;

    $food_price = $data->food_price;

}
Nico Haase
8 августа 2021 в 18:53
0

....уверены ли вы? JSON.decode вызовет довольно серьезное сообщение об ошибке в обычном PHP

A.A Noman
8 августа 2021 в 18:55
0

@NicoHaase, извините, это моя ошибка в синтаксисе.