在yii中创建API以进行跨域通信

时间:2013-08-08 04:52:00

标签: javascript jquery api rest yii

我计划在yii中创建Restful API以进行跨域通信。正如我所研究的那样,跨域通信只能通过jsonp完成,我的实现如下:

UsersController :: actionCrossDomain

public function actionCrossDomain(){
   $this->layout=false;
   $data['data']['User']['name']= 'Johny';
   $this->_sendResponse(200, CJSON::encode($data),'application/json');

} 

UsersController :: _ sendResponse方法与你在Click here

中看到的相同

在我使用虚拟主机配置的另一台服务器上,我通过ajax调用上述方法:

  $( document ).ready(function() {
         $.ajax({
           type: "POST",
           dataType: "jsonp",
           url:'http:'http//uxaserver.local/alpha2/app/users/crossDomain' ,
           data: null,
           processData: false,
           crossDomain: true,
           contentType: "application/json",
           success: function (data) {
                     console.log("done");
            },
            error: function (request, status, error) {
                         console.log(request);
                   }
        });
});

问题是我的萤火虫抱怨说:

SyntaxError: invalid label

我的要求是这样的,因为我正在帮助我的客户对其他网站进行一些自定义分析,我需要在他的不同域的网页中放置一个脚本,以便将分析数据记录在主服务器中。我知道我需要使用rest接口进行通信,因此我采用这种方法。我不确定我是否采取了正确的方法并请求建议。我希望以一种客户端具有api密钥并且可以与我提供的api进行通信的方式来实现它。

还有其他办法吗?而不是jsonp?

1 个答案:

答案 0 :(得分:0)

我看到这个字符串内容错误

url:'http:'http//uxaserver.local/alpha2_uxarmy/app/users/crossDomain' ,

应该是

url:'http//uxaserver.local/alpha2_uxarmy/app/users/crossDomain' ,