Ajax调用上的跨域错误,Yii2

时间:2015-07-13 05:58:31

标签: php jquery ajax json yii2

这是我的探测器的简化版本。

我尝试对特定控制器/操作URL的视图进行简单的ajax调用,并期待json响应。

视图/艺术品/ ajax.js

ajaxRequest = $.ajax({
    type: "post",
    dataType: 'json',
    url: "/index.php?r=artwork/search",
    data: { "globalSearch": "somesearchterm" }
});

与请求相对应的操作(在本例中为actionSearch)只需返回参数的值globalSearch作为响应。

控制器/ ArtworkController.php

public function actionSearch()
{
    if (Yii::$app->request->isAjax) {

        Yii::$app->response->format = Response::FORMAT_JSON;

        $sterm = Yii::$app->$request->post('globalSearch');

        $res = array(
            'logicresult' => $sterm,
            'success' => true,
        );

        return $res;
    }
}

但是,我遇到了一个jquery跨域错误。我做错了什么?

Chrome控制台日志

POST http://localhost/index.php?r=artwork%2Fsearch 500 (Internal Server Error)
n.ajaxTransport.k.cors.a.crossDomain.send @ jquery.min.js:4
n.extend.ajax @ jquery.min.js:4handleAjaxLink @ajax.js:19
n.event.dispatch @ jquery.min.js:3
n.event.add.r.handle @ jquery.min.js:3

1 个答案:

答案 0 :(得分:2)

500(内部服务器错误)意味着服务器端出现了问题。

它不是跨域错误。错误在您的PHP代码中。

您忘记为if条件添加关闭}(问题与行动actionSearch中的每个代码提及的AS)。