TypeError forEach не является функцией

#javascript #php #jquery #ajax #laravel

#javascript #php #jquery #ajax #laravel

Вопрос:

Я пытаюсь добавить массив, поступающий из ответа, в некоторый контейнер с помощью функции javascript forEach. Но получение ошибки «response.cat_products.forEach не является функцией». В чем моя ошибка?

     return response()->json([
        'status' => true,
        'message' => 'success',
        'cat_products' => $cat_products,
        'cat_count' => $cat_count
    ]);
 
     if (response.status == true) {
        response.cat_products.forEach(filter); //filter is a function

    }
 

Комментарии:

1. @berend Мне пока не нужны элементы myArray . Я просто пытаюсь выполнить функцию filter для каждой строки myArray

Ответ №1:

Когда ответ возвращается от контроллера Laravel, например

 return response()->json([
    'status' => true,
    'message' => 'success',
    'cat_products' => $cat_products,
    'cat_count' => $cat_count
]);
 

Тогда фактический массив доступен на стороне javascript в ответе.ключ данных.

Поскольку вы выполняете неполное сравнение в операторе if, оно сравнивается с response.status: 200, а не с вашим, указанным "status" => true в ответе json

 if (response.status == true) {
    //response.data should contain the data sent as response from controller
    console.log(response.data); 
    
    //response.cat_products.forEach(filter); //filter is a function

    response.data.cat_products.forEach(filter);  //this should work

}
 

Комментарии:

1. Спасибо за ваш ответ. Вы правы в том, что массив находится под ключом данных, но я должен написать response.cat_products.data.forEach(filter) . Это решило мою проблему