Kei*_*wer 2 cakephp cakephp-2.4
我刚刚升级到cakephp 2.4.1,因为它现在支持JsonP.我以前在我的ajax跨域代码中遇到了一个丢失的回调错误.然而,文档没有提到任何需要实现这一步的额外步骤,所以我认为它应该会出现,但我得到了与以前相同的错误.
我是否需要一段额外的代码来发回回调用回复?
我的控制器
public function api($mem_id = null) {
$options = array(
'fields' => array('Member.total_points'),
'conditions' => array('Member.member_no' => $mem_id),
'recursive' => -1
);
$members = $this->Member->find('first', $options);
$this->set(array(
'member' => $members,
'_serialize' => array('member')
));
}
Run Code Online (Sandbox Code Playgroud)
}
ajax代码
$('document').ready(function() {
$.ajax({
url: 'http://mydomain.com/loyalty/members/api/5749.json',
dataType: 'jsonp',
success: function(response) {
console.log(resonse);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
}
});
});
Run Code Online (Sandbox Code Playgroud)
它应该与旧的Cake版本一起工作正常,就像我在你的另一个问题中描述的那样;)
无论如何,请查看API文档中/lib/Cake/View/JsonView.php或代码中的代码.您必须定义一个名为的视图var ,它可以是一个字符串,指定保存回调函数名称的查询变量的名称,或者表示正在查找名称的默认查询变量._jsonptruecallback
因此,jQuery callback默认使用查询变量名称,定义true为_jsonp应该这样做:
$this->set(array(
'member' => $members,
'_serialize' => array('member'),
'_jsonp' => true
));
Run Code Online (Sandbox Code Playgroud)
如果callback在请求URL(即?callback=whatever)中找不到名为的查询变量,则会收到常规的JSON响应.
也可以看看
| 归档时间: |
|
| 查看次数: |
1117 次 |
| 最近记录: |