CakePHP AJAX-Call:发生错误:未定义

时间:2015-08-17 15:36:26

标签: javascript jquery ajax cakephp

我正在尝试使用cakephp运行一些示例ajax应用程序。我开始阅读这篇博文:http://www.dereuromark.de/2014/01/09/ajax-and-cakephp/我试图改编我的架构。

现在我被困在这里: 当我更改第一个选择框的选择时,我收到错误警告:undefined。

当我试图直接在浏览器中调用AJAX-URL时,它实际上返回了应该在第二个选择框中更新的正确的html内容,但是我看到还有一个500 Server-Error也被返回哪个sais无法加载recource http://localhost/favicon.ico。这就是为什么ajax-call sais"出现错误的问题"?我不知道为什么这个资源甚至被调用,为什么它在localhost /而不是app-folder中查找。任何人都能告诉我我需要做些什么才能让ajax-sample运行?这是ajax调用的JS代码:

<script>
$(function() {
$('#countries').change(function() {

    var selectedValue = $(this).val();
    var targeturl = $(this).attr('rel') + '?id=' + selectedValue;
    $.ajax({
        type: 'get',
        url: targeturl,
        beforeSend: function(xhr) {
            alert(targeturl);
            xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        },
        success: function(response) {
            alert(response);
            if (response.content) {
                alert("content");
                $('#provinces').html(response.content);
            }
        },
        error: function(e) {
            alert("An error occurred: " + e.responseText.message);
            console.log(e);
        }
    });
});
});
</script>

这些是我的控制器功能:

public $components = array('Session','RequestHandler');
...
public function chained_dropdowns() {
    $countries = $this->TestRun->find('list');
    $countryProvinces = array();
    foreach ($countries as $key => $value) {
        $countryProvinces = $this->TestRun->TestStepRun->find('list',array('conditions'=>array('TestStepRun.test_run_id'=>$key)));
        break;
    }
    $this->set(compact('countries', 'countryProvinces'));
}
public function country_provinces_ajax() {
    //$this->request->onlyAllow('ajax');
    $id = $this->request->query('id');
    if (!$id) {
        throw new NotFoundException();
    }

    //$this->viewClass = 'Tools.Ajax';

    //$this->loadModel('Data.TestStepRun');
    $countryProvinces = $this->TestRun->TestStepRun->find('list',array('conditions'=>array('TestStepRun.test_run_id'=>$id)));

    $this->set(compact('countryProvinces'));
}
}

我在我的routes.php中添加了

Router::parseExtensions();
Router::setExtensions(array('json'));

[更新] 我刚刚将错误输出行更改为:

alert("An error occurred: " + e.responseText);

现在,我收到错误消息:&#34; An error occured: <option value="">...&#34; 这是来自json-view的数据,应该传递给success-function。我只是不知道,为什么会抛出错误。

0 个答案:

没有答案