【发布时间】:2016-07-12 08:17:42
【问题描述】:
在更改下拉列表的值时难以获得控制器的响应,但出现内部服务器错误
$( document ).ready(function() {
//alert( "ready!" );
$('#devices-types-id').on('change', function() {
alert( this.value );
$.ajax({
type:"POST",
url: "<?php echo Router::url(array('controller'=>'FeaturesLists','action'=>'ajax_get_parent', '_ext' => 'json'));?>",
dataType: 'text',
async:false,
success: function(data){
alert(data);
},
error: function (data) {
alert(data);
}
});
});
但首先出现路径错误
POST http://localhost/compare_devices/features-lists/%3C?php%20echo%20Router::ur…ction%27=%3E%27ajax_get_parent%27,%20%27_ext%27%20=%3E%20%27json%27));?%3E 404 (Not Found)
如果我在 ajax 调用中像这样的 url 写路径:“/ajax_get_parent”,那么它不会给出路径错误,而是“内部服务器错误”
POST http://localhost/compare_devices/features-lists/ajax_get_parent 500 (Internal Server Error)
控制器代码
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
$this->Auth->allow(['ajaxGetParent']);
}
public function ajaxGetParent() {
$this->layout = false;
$this->set('text', 'SUCCESS');
$this->set('_serialize', ['text']);
}
在 routes.php 我把这一行
Router::extensions('json', 'xml');
我正在尝试以 json 格式获取结果,但无法获取。你能指导我如何做到这一点。许多问题已经在“SO”上发布了相同的主题,但其中大部分是针对 Cakephp 2.x 的,我尝试了一些不同的解决方案(来自 SO 和谷歌的帮助)但无法解决。你能指导我如何在 json 中获得响应并解决路径问题。
【问题讨论】:
-
你把 jQuery 脚本放在哪里了?
-
使用jquery在线echo $this->Html->script('code.jquery.com/jquery.min.js'); echo $this->Html->script('featureList.js');其余代码在名为“featureList.js”的单独文件中,然后将其包含在视图文件中
-
您包含一个 .js 文件,因此您不能将 php 文件放入其中,因为它不会被解析。这就是您收到 404 错误的原因。关于 500 错误,您必须查看日志以了解发生了什么。你加载 RequestHandler 组件了吗?
-
这个包含.js文件的视图文件不同,而响应视图(控制器功能)不同
-
实际上我试图在没有为该操作创建视图文件的情况下获得响应。现在它正在工作。但作为响应,会返回完整的 html 数据。我怎样才能只获得设置数据。 @arilia
标签: jquery json ajax cakephp cakephp-3.0