Ajax не получает никакого ответа от кода CakePHP - PullRequest
0 голосов
/ 09 января 2019

Я использую CakePHP 2.9 для отправки данных по URL с помощью ajax и получения соответствующего ответа.

Я пытался получить метод ответа, я также хочу знать, почему это //URL:'/Pages/dropdownbox/'+id не работает.

ниже приведен код ajax, который я написал в index.ctp.

$("#certificatedetail").on('change',function() {
    var id = 'subcribe';
    $("#usertype").find('option').remove();
    $("#certificateclass").find('option').remove();
    $("#certificatetyp").find('option').remove();

    if (id) {
        $.ajax({
            type: 'POST',
            url:'<?= Router::url(array('controller' => 'Pages', 'action' => 'dropdownbox','id')); ?>',
            //url:'/Pages/dropdownbox/'+id,
            dataType:'json',
            cache: false,
            async:true,
            success: function(html) 
            {
                $('<option>').val('').text('select').appendTo($("#usertype"));
                $('<option>').val('').text('select').appendTo($("#certificateclass"));
                $('<option>').val('').text('Select').appendTo($("#certificatetyp"));

                $.each(html, function(key, value) 
                {
                    $('<option>').val(key).text(value).appendTo($("#usertype"));
                });
            }
        });
    }
});

Я написал этот код контроллера в PagesController, PHP и объявил выпадающий список в AppController.php

public function dropdownbox($id = null)
{
    Configure::write('debug', 0);
    $this->layout = null;
    $this->autoRender = false;
    $category = array();

    switch ($id)
    {
        case $id == "subcribe":
            if ($id == 'subcribe') {
                $category = array(
                    'individual' => 'Individual',
                    'organization'=>'Organization',
                    'organizationgovt' => 'Organization-Govt',
                    'organizationbank' => 'Organization-Bank'
                );
                break;
            }
    }
}

/ ниже приведен код, в котором я указываю функцию раскрывающегося списка в AppController.php

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow(
        'login','add','index','contact','dropdownbox',
        'cityres','stateres','sectorres','productres',
        'project','service','about','apply','tender',
        'decregistration','search','searchresult',
        'tenderdetails'
    );
}

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Вы не возвращаете никакого ответа от контроллера. Сделайте несколько вещей, чтобы отладить его

  1. Проверьте на вкладке «Сеть» в браузере, является ли вызываемый URL правильным или нет.
  2. Проверьте правильность параметров или нет.

enter image description here Вот так это выглядит в Firefox Developer Edition

  1. Если URL правильный. Добавьте приведенный ниже код в метод dropdownbox () . (До закрытия метода)

    echo json_encode ($ категория);

  2. Проверка Ответ Вкладка на вкладке Сеть . (Пример изображения выше).

  3. Кроме того, утешите ответ в коде JavaScript. Возможно, вы получите какой-то другой ответ, который не является JSON.

    success: function (html) { console.log (HTML); ... }

Надеюсь, это поможет.

0 голосов
/ 09 января 2019

Вы генерируете URL на своем сервере и используете строковый литерал 'id' в нем. На переменную JavaScript id никогда не ссылаются. Что вы, вероятно, хотите, это:

url:'<?= Router::url(array('controller' => 'Pages', 'action' => 'dropdownbox')); ?>' + id,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...