2013-07-09 74 views
0

我是Yii的新手,並且遇到問題:我從Jquery Mobile應用程序向Yii WorkerController的actionJSON()發送ajax POST請求(帶有名字和姓氏參數)功能。這個函數(action)檢索具有提交的名字和姓氏POST值的列值的工作人員模型。所以這裏是代碼 - 最後的問題是我的onSuccess和onError方法都沒有在jQuery中調用。Yii:在控制器動作中渲染Json的模型

jQuery Mobile的 -

$(document).ready(function() { 
     $("#submit").click(function(){ 

      var formData = $("#callAjaxForm").serialize(); 

      $.ajax({ 
       type: "POST", 
       url: "localhost/myYiiVodovod1/index.php?r=site/json", 
       //crossDomain: true, 
       cache: false, 
       data: formData, 
     //dataType : 'json', 
       success: onSuccess, 
       error: onError 
      }); 

      return false; 
     }); 
    }); 

的Yii workerController - 我不知道該findByAttribute()是否正確:

public function actionJson(){ 

      if((isset($_POST['firstName']) && isset($_POST['lastName']))){ 

      header('Content-type: application/json'); 

      $model=$this->loadModelTwo($_POST['firstName'],$_POST['lastName']); 

      echo CJSON::encode($model); 

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

    } 

public function loadModelTwo($fname,$lname){ 

     $model = Worker::model()->findByAttributes(array('first_name' => $fname, 'last_name' => $lname)); 

     if($model===null){ 
     throw new CHttpException(404,'The requested page does not exist.'); 
     }    

     return $model; 

    } 

感謝。

回答

0

我認爲你的問題很簡單,除非你有一個錯字。你說你的actionJson位於workerContoller但是你的ajax調用是localhost/myYiiVodovod1/index.php?r=site/json因此除非你有一些特殊的URL映射,否則它應該是siteController。很可能你只需要在你的ajax調用中更正你的url。

另外,當處理ajax調用時,安裝Firebug或其他插件總是不錯的,所以你可以看到ajax調用和響應。