2013-05-26 61 views
0

嘗試在symfony1.4表單模板中使用jquery ajax編寫動態依賴選擇代碼。 我寫了代碼,我可以從下拉列表中選擇第一個字段的值,並將其傳遞給我的PHP函數以獲取用於選擇第二個下拉列表值的數據。我可以將返回值傳遞給php函數的ajax函數,但我不能使用此值選擇我的下拉列表值symfony1.4,ajax,依賴選擇的javascript jquery

這裏我給了我的代碼。請給出建議。

代碼:

_form.php這個

<script type="text/javascript"> 
    jQuery(document).ready(function() { 
    $("#application_program_institution_program_id").change(function(){ 
      var id=$(this).val(); 
      if(id != '') { 
       $.ajax({ 
        type: "POST", 
        url: '<?php echo url_for('Application/Program'); ?>'+ '?id=' + id,  
        cache: false, 
        success: function(data) 
        { 
          alert(data);// its show my returned value 

         $("#application_campus_campus_id").val(data);// but it does not select the value of dropdown list. 

        } 
       }); 
      } 
     }); 
    }); 

</script> 

Applicationaction類

public function executeProgram(sfWebRequest $request) { 
     $id = intval($request->getParameter('id')); 
     $campusList = InstitutionCampus::getCampus($id); 
     return $this->renderPartial('result', array('campusList' => $campusList)); 

    } 

getCampus代碼:

public static function getCampus($id) { 
     $resultset = Doctrine_Query::create() 
        ->select('ip.id as id, ip.program_code as title, ic.id as ip, ic.campus_name as campusname, icp.institution_campus_id') 
        ->from('InstitutionCampusProgram icp') 
        ->innerJoin('icp.InstitutionProgram ip') 
        ->innerJoin('ip.Institution i') 
        ->innerJoin('icp.InstitutionCampus ic') 
        ->where('ip.all_campus = ?', '0') 
        ->andWhere('i.institution_code = ?', CodeUtil::UttaraUniversity) 
        ->andWhere('icp.institution_program_id =?', $id) 
        ->execute(); 
      foreach ($resultset as $prog){ 
       $result = $prog->ip; 
      } 


     return $result;   
    } 

} 

_result.php代碼:

<?php echo $campusList; ?> 
+0

你應該看看這個解決方案[如何從ajax請求中填充選擇](http://stackoverflow.com/a/1745745/569101)。你只需要適應symfony(沒有困難)。 – j0k

+0

我認爲@Chaity不需要用數據填充'看起來像什麼和'data'的值是什麼(你在警告框中得到了什麼? –

+0

嘗試用console.log() 。有時警報會剎車 – ilSavo

回答

2

好了,上面應該工作,但是試試這個,以及:

<script type="text/javascript"> 
jQuery(document).ready(function() { 
$("#application_program_institution_program_id").change(function(){ 
    var id=$(this).val(); 
     if(id != '') { 
     var r = $.ajax({ 
       type: "POST", 
       url: '<?php echo url_for('Application/Program'); ?>'+ '?id=' + id,  
      }); 
      $("#application_campus_campus_id").val(r); 
     } 
    }); 
}); 

也能改變你getCampus.php代碼最後一行返回$ result返回$ result [0],如果單個值返回,否則請記住你要返回一個數組,你應該改變php數組爲javascript數組,你可以使用json_encode。