2013-02-27 134 views
0

我有一個帶有2個選擇框的ZF表單。兩者都應該填寫2個數據庫表格。第一個選擇框將在首先呈現表單時填充。 (所以這樣做,工作正常) 然後,我想填充第二個選擇框,當用戶選擇一個值並將它傳遞給選擇SQL以獲取第二組數據時,通過獲取第一個選擇框的值。使用在第一個選擇框中選擇的值填充第二個選擇列表Zend Framework 1

而我不希望頁面被刷新。 (所以AJAX/JavaScript的/ jQuery的)

我已經在我的觀點如下(一個.phtml)

<script type="text/javascript"> 

$(document).ready(function(){ 
$('#make').change(function($e){ 
    $e.preventDefault(); 
    var href= "index/load"; 
    var data = 'make_id='+$('#make').val(); 
    $.ajax({ type: "POST", 
      url: href, 
      data: data, 
      success: function(response){ 
      location.href = 'index/load'; 
     } 
    }); 
}); 
}); 

</script> 

,但我不能訪問我的控制器動作之後,從使用AJAX後傳遞的值

$this->getRequest()->getParams('make_id'); 
+0

是的,這是'AJAX/JavaScript的/ jquery'。但你到目前爲止嘗試過什麼? – Rikesh 2013-02-27 11:27:03

+0

我編輯我的問題,請看看 – Thanu 2013-02-27 11:33:11

回答

0

好發現這樣做,在我看來PHTML我有以下的簡單方式,

<body> 
<?php 
    $this->form->setAction($this->url()); 
    echo $this->form; 

    ?> 

    <script type="text/javascript"> 

    $(document).ready(function(){ 
     $('#select1').change(function(){ 
      $('#Myform').submit(); 
      return false; 
     }); 
    }); 

    </script> 
</body> 

而在我的控制器操作我有

public function viewAction() 
{ 

     $form= new Application_Form_Myform(); 
     $selectbox1 = $form->getElement('select1'); 
     $selectbox1->setMultiOptions($this->populateselectbox1()); //This function fetch data from the db and make an array 
     if ($this->getRequest()->getPost('select1')!=""){ 
      $selectbox2 = $form->getElement('select2'); 
      $selected = $this->getRequest()->getPost('select1'); 
      $select->setMultiOptions($this->populatselectbox2($selected)); //This function fetch data from the db and make an array 
      $selectbox1->setValue($selected); 
     } 
     $this->view->form = $form; 
    } 
0

一個Ajax請求的data部分需要JSON對象這樣{make_id: something},所以你必須在這個格式發送參數:

$(document).ready(function(){ 
    $('#make').change(function($e){ 
    $e.preventDefault(); 
    var href= "index/load"; 
    var data = $('#make').val(); 
    $.ajax({ type: "POST", 
    url: href, 
    data: {make_id: data}, 
    success: function(response){ 
    location.href = 'index/load'; 
    } 
}); 

});

+0

不幸的是它仍然不工作,它是一樣的... – Thanu 2013-02-27 11:47:02

+0

你是否看到'var data'已經改變了?你是否檢查'$('#make')。val()'是否獲得了真正的值? – MurifoX 2013-02-27 11:50:20

+1

如果正在對服務器進行'ajax'調用,您是否在'firebug/developer tools'中進行了調試?你有沒有檢查'$ e.preventDefault()'是否不妨礙ajax調用? – MurifoX 2013-02-27 11:51:32

相關問題