Ajax没有从cakephp代码得到任何回应

时间:2019-01-09 02:45:00

标签: ajax cakephp

我正在使用CakePHP 2.9使用ajax在URL上发送数据并获取相关响应。

我尝试了may方法来获取响应,我也想知道为什么这个//URL:'/Pages/dropdownbox/'+id无法正常工作。

bellow是我在index.ctp中编写的ajax代码。

$("#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中声明了dropdownbox

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中指定dropdownbox函数的代码

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 :(得分:0)

您正在服务器上生成URL,并在其中使用字符串文字<ContentPage.Resources> <ResourceDictionary> <local:IntToColorConverter x:Key="intToColor" /> </ResourceDictionary> </ContentPage.Resources> <Label ... TextColor="{Binding Happiness, Converter={StaticResource intToColor}}"> 。绝对不会引用JavaScript 'id'变量。您可能想要的是:

id

答案 1 :(得分:0)

您没有从控制器返回任何响应。做一些调试的事情

  1. 在“浏览器的网络”标签中检查所调用的URL是否正确。
  2. 检查参数是否正确。

enter image description here 这是在Firefox开发人员版中的外观

  1. 如果URL正确。在 dropdownbox()方法中添加以下代码。 (在方法关闭之前)

    echo json_encode($ category);

  2. 选中网络标签中的响应标签。 (上面的示例图片)。

  3. 此外,在javascript代码中控制台响应。也许您会得到其他一些不是JSON的响应。

    成功:function(html){     console.log(html);     ... }

希望有帮助。