Ajax-запрос Cakephp без перезагрузки страницы

#ajax #cakephp #cakephp-3.0 #cakephp3

Вопрос:

У меня есть таблица категорий и подкатегорий, которые мне нужны, когда продукт добавляется и пользователь выбирает категорию по моему выбору, в следующем списке подкатегорий должны отображаться только те подкатегории, которые есть … Я использую ajah в своем admint.ctp, все кажется прекрасным, но мой контроллер не получает запрос ajah

 $('#category_id').change(function(){
        $('.typecategories-select').fadeIn('slow');
        var category_data = $(this).val()
        console.log(category_data)
        $.ajax({
            type: "POST",
            url: '<?php echo $this->Url->build(['controller' => 'Products', 'action' => 'add','plugin'=>'admin']); ?>',
            data: {category_id:category_data},
            success: function(data){
                console.log('AjaX Success')
                // console.log(data)
            },
            error: function(){alert('AjaX Failed')}
        });


    });
    
    }
    
    
    
    
    //ProductsController
public function add()
    {
    if ($this->request->is('post')){
            $a = 'ajax success';
            echo $a;
        }
        if ($this->request->is('put')){
            $a = 'ajax success';
            echo $a;
        }
        if ($this->request->is('ajax')) {
            $a = 'ajax success';
            echo $a;
        }
        else{
            echo $value = $this->request->getData('category_id');
            echo $value;
            $a = 'a';
            echo $a;
//here only return $a after i change #category_id but its ajax request wtf?

        }
        if ($this->request->is('json')){
            $a = 'ajax success';
            echo $a;
        }
        
}         

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

1. Проверьте URL-адрес, который Cake создает для вас из предоставленного массива. Убедитесь, что он выглядит так, как вы ожидаете, и что он «работает», когда вы пытаетесь получить доступ к нему напрямую в своем браузере, а не через Ajax.

2. @GregSchmidt не могли бы вы объяснить немного подробнее? я делаю этот запрос из своего макета с помощью плагина администратора

3. «Просмотреть источник» на странице, на которой указан код для вызова Ajax. Каков URL-адрес, который он создал для вас там? Какой URL-адрес вы там ожидаете?

4. Пожалуйста, отладьте свой код правильно, поставьте оператор exit после «echo», также отладьте запрос: вы будете знать точный метод запроса там. также проверьте вкладку «Сеть» браузера->запрос xhr : там вы узнаете, какие параметры, заголовки и т. Д. Отправляются.