2013-03-14 115 views
0

我在AJAX要求採取行動:警予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它會更快地返回響應,但可以阻止某些操作。

這不是一個生死攸關的問題,而是要理解正確的語法,因爲我會經常使用它。

回答

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

+0

這是我搜索。謝謝! – Narek 2013-03-14 07:37:41

+0

只是一個澄清。我是否需要在最後回覆後添加它,否則Yii會自動執行此操作? – Narek 2013-03-14 07:40:39

+1

@Narek我已經更新了我的答案和要求的澄清。 – 2013-03-14 07:59:05

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; 

     } 
} 

或者,你可以添加更多的情況。

+0

感謝您的回答,但這只是一個簡單的例子。在真實的代碼中可以在不同的地方進行多次檢查。 – Narek 2013-03-14 07:36:16

+1

@Narek我給最簡單的形式,因爲你沒有提到多個檢查..在這種情況下,你可以使用'Yii :: app() - > end();' – 2013-03-14 08:17:43