0

我对YII中的AJAX请求采取了行动:

public function actionSomeCheck()
{
    if($_GET['foo'] == 'bar')
    {
        echo CJSON::encode(array('status'=>'ok'));
    }

    echo CJSON::encode(array('status'=>'error'));
}

我需要在生成响应后添加刹车,但没有找到正确的语法。

有可能:

public function actionSomeCheck()
{
    if($_GET['foo'] == 'bar')
    {
        echo CJSON::encode(array('status'=>'ok'));
        die();// Or exit
    }

    echo CJSON::encode(array('status'=>'error'));
    die();
}

或者:

public function actionSomeCheck()
{
    if($_GET['foo'] == 'bar')
    {
        echo CJSON::encode(array('status'=>'ok'));
        return false;
    }

    echo CJSON::encode(array('status'=>'error'));
    return false;
}

或在最后一次响应后没有任何中断。

可能使用die/exit它会更快地返回响应,但可以阻止某些操作。

这不是生死攸关的问题,而是要理解正确的语法,因为我会经常使用它。

4

2 回答 2

1

使用开关盒

public function actionSomeCheck()
{
$data = $_GET['foo'];
switch($data)
         {
             case 'bar':
                 echo CJSON::encode(array('status'=>'ok'));
             break;
             default:
                 echo CJSON::encode(array('status'=>'error'));
             break;

         }
}

或者您可以添加更多案例。

于 2013-03-14T07:22:19.860 回答
1

终止 Yii 应用程序的正确方法是:

Yii::app()->end();

onEndRequest这将在调用exit()自身之前处理任何事件。

见:http ://www.yiiframework.com/doc/api/1.1/CApplication#end-detail

补充说明:

没有必要Yii::app()->end;在请求结束时给自己打电话。该方法所做的只是处理onEndRequest事件,然后调用exit().

而当您使用 正常运行应用程序时run(),您会看到onEndRequest在应用程序正常终止之前默认处理事件。

见:http ://www.yiiframework.com/doc/api/1.1/CApplication#run-detail

于 2013-03-14T07:35:37.017 回答