用ajax发布变量时找不到类Yii


Class Yii is not found when posting a variable with ajax

我想从ajax到php获得一个变量。我用的是Yii框架。所以我的问题是,当我想把一个变量从ajax到php脚本我得到这个错误:

致命错误:类'Yii'没有找到/var/www/vhosts/adappter.de/comamos/保护/视图/商店/search_area.php第44行store.js:1308:13

这是我的Ajax调用看起来像

var selectedCuisine = [];
$( document ).on( "click", "#cuisines", function() 
{
    if ( $(this).is(':checked') ) 
    {
        selectedCuisine.push($(this).val());
    }
        // document.getElementById('cuisine-list').style.visibility='hidden';
   $.ajax({
        type: "GET",
        url: "../protected/views/store/search_area.php",
        data: {cuisine : selectedCuisine}, 
        success: function(response){
            console.log(response);
        }
    });
});

这是我的PHP脚本第44行

<?php 
if (!isset($_SESSION)) { session_start(); }
$_SESSION['search_type']='';
if (isset($_GET['s'])){
  $_SESSION['kr_search_address']=$_GET['s'];
  $_SESSION['search_type']='kr_search_address';
}
unset($_SESSION['kr_item']);
unset($_SESSION['kr_merchant_id']);
$marker=Yii::app()->functions->getOptionAdmin('map_marker');
if (!empty($marker)){
   echo CHtml::hiddenField('map_marker',$marker);
}
?>

jQuery调用只有当我点击一个复选框。所选框的值被推入数组中。我想把数组返回给php脚本。当我加载网站时,我没有得到这样的错误。所以我不知道为什么会出现这个错误

你需要使用controller with action。不只是查看文件。你尝试从web调用视图文件。但这是错误的,因为所有的代码在受保护的目录。所有请求必须从索引文件处理。在索引文件连接框架。这里有一个小例子。控制器:

class SiteController extends Controller
    public function actionTest()
    {
        //... example
        echo CHtml::button('test');
    }

js:

var selectedCuisine = [];
$( document ).on( "click", "#cuisines", function() 
{
    if ( $(this).is(':checked') ) 
    {
        selectedCuisine.push($(this).val());
    }
        // document.getElementById('cuisine-list').style.visibility='hidden';
   $.ajax({
        type: "GET",
        url: "/site/test", // url for your action
        data: {cuisine : selectedCuisine}, 
        success: function(response){
            console.log(response);
        }
    });
});