2012-04-11 103 views
0

我如何填充組合框元素從Ajax響應 PS:組合框和Zend_Form添加元素從Ajax響應由Zend_Form生成與元素的組合框

我的表單創建

<?php 

class Application_Form_SearchProduct extends Zend_Form 
{ 

    public function init() 
    { 
     $this->setName("SearchProduct"); 

     $a=new Application_Model_Class_Categories(); 
     $this->setMethod('post'); 


     /* Combo box Category*/ 
     $this->addElement('Select', 'Category',array(
     'label'  => 'Category:', 
     'AutoComplete'=> true, 

      'MultiOptions' => $a->GetCategories(), 
     'required' => true)); 


       /* Combo box SubCategory*/ 

     $this->addElement('Select', 'SubCategory',array(
     'label'  => 'Sub Category:', 
     'AutoComplete'=> true, 


     'required' => true)); 

     $this->addElement('submit', 'Search', array(
      'required' => false, 
      'ignore' => true, 
      'label' => 'Search', 
     )); } } 
?> 

JS腳本

<script type="text/javascript"> 

    //for send data i'll use jquery library 

    $(document).ready(function(){ 
      $('#Category').change(function() 
       { 

        var message=$('#Category option:selected').text(); 
        if (message != '') { 

         //run ajax 

        $.ajax({ 
type: "GET", // envoi des données en POST 
url: 'http://localhost/EverTags1/Authentification1/public/Product', 

    //baseurl+"/Product/index", 

data: {'message' : message}, 

cache: false, 
success: function (respond) { 
           //put respond in class show-msg 


            //$("#menuLeft").html(respond); 
            $("#SubCategory").add(respond);     

} 
}) 
; }});}); 
    </script> 

我的行動

public function indexAction() 
    { 

     $form = new Application_Form_SearchProduct(); 

     $this->view->form = $form; 
     $b=new Application_Model_Class_SubCategories(); 
     $message = $_GET['message']; 
     $result = $b->GetSubCategories($message); 
     echo($result[0]) ; 

    } 

$結果[0]包含如下因素串女裝

和我還有一個問題,當我從第一個組合框中選擇該元素的頁autoduplicates,我無法找到問題

回答

0

我發現我的問題

<script type="text/javascript"> 

    //for send data i'll use jquery library 

    $(document).ready(function(){ 
      $('#Category').change(function() 
       { 

        var message=$('#Category option:selected').text(); 
        if (message != '') { 
$.ajax({ 
type: "GET", // envoi des données en POST 
dataType : 'json', 
url: //baseurl+"Product/index", 
    'http://localhost/EverTags1/Authentification1/public/Product/index', 
async: false, 
data:{"message" : message}, 
success: 
    function (respond) { 

    var json=JSON.stringify(respond); 
    var objet = eval('(' + json + ')'); 

     e=objet.length; 

     var str = ""; 

    for (var count = 0 ; count < e; count++) { 


     str += "<option value='" + count + "'>" + objet[count].name+ "</option>" 
    } 

    $("#SubCategory").empty().append(""+str); 
} 

} 
); 

}});}); 
    </script> 

行動的解決辦法:

public function indexAction() 
    { 


     $form = new Application_Form_SearchProduct(); 
     $this->view->form = $form; 


if($this->_request->isXmlHttpRequest()) { 
     $this->_helper->viewRenderer->setNoRender(); 
     $this->_helper->layout->disableLayout(); 
      $message = $_GET['message']; 

     $soap_client = new nusoap_client('http://127.0.0.1/evertags/GetCategorySubCategories/servSubCategories.php?wsdl','true'); 
     $proxy = $soap_client->getProxy(); 
     $result= $proxy->ReturnSubCategoriesNames($message); 

      echo $result; 



} 

我希望這將幫助其他人

0

代替:

echo($result[0]) 

嘗試:

$this->view->result = $result[0]; 

,改變你的成功的功能:

success: function(data.result) { 
    $("#SubCategory").add(data.result); 
} 
+0

您的解決方案不起作用,沒有什麼顯示, – 2012-04-12 09:30:42

+0

您的data.result是預期值? – 2012-04-12 12:43:30

+0

試試jQuery(「#SubCategory」)。empty()。append(「」); – 2012-04-12 13:21:03