我可以从标准的http://传递我的错误,但我无法在我的jquery调用中获取$ errors值来渲染(甚至传递)。谁知道我在做错了什么?我已经在这里待了大约5个小时并且在我的脸上睡着了..感谢您的任何指导和批评。
我的jQuery:
$j("#applicant_age").focusin(function(){
$j(this).css("background-color","#FFFFCC");
});
$j("#applicant_age").focusout(function(){
$j(this).css("background-color","#ffffff");
$j.getJSON('<?php echo $this->Html->url(array('controller'=>'plans', 'action'=>'ajax_search_validate'))?>', function(json){
});
});
控制器操作:
function ajax_search_validate() {
if ($this->Plan->validates()) {
$this->Plan->set($this->data);
$errors = $this->Plan->invalidFields();
$this->set('errors', $errors);
}
}
查看(发布此内容可能毫无意义,但嘿......):
<?php
foreach ($errors as $error) :
?>
<p id="errorStyle" style="padding: 10px; background-color: #FF3333; color: #ffffff; margin: 0px 0px 10px 0px; "><?php echo $error; ?></p>
<?php endforeach; ?>
FireBug回复:
ResponseHeaders
Date Wed, 18 May 2011 09:28:51 GMT
X-Powered-By PHP/5.2.6-1+lenny10
P3P CP="N..."
Connection Keep-Alive
Content-Length 0
Server Apache/2.2.9 .....
Content-Type text/html
Keep-Alive timeout=15, max=100
RequestHeaders
Accept application/json, text/javascript, */*; q=0.01
X-Requested-With XMLHttpRequest
答案 0 :(得分:1)
您要呈现的视图是HTML,因此您的$.getJSON
调用会获取一堆HTML,而不是JSON。如果JSON未验证,则响应将显示为空,这就是您在$.getJSON
呼叫中看不到任何内容的原因(尽管有200个成功响应)。试试这个:
$j.get('<?php echo $this->Html->url(array('controller'=>'plans', 'action'=>'ajax_search_validate'))?>', function(html){
alert(html);
});
如果您确实希望将JSON返回给客户端,则需要修改控制器以返回一些。类似的东西:
echo json_encode(array('errors', $errors));
您可能必须禁用默认视图呈现行为(或创建JSON视图)。我对CakePHP并不熟悉,所以我无法真正了解如何实现这一目标。