0

コンボボックスにajax応答psの要素を入力するにはどうすればよいですか:コンボボックスは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]) ;

    }

$ result [0]には、次の文字列Women'sClothingが含まれています

最初のコンボボックスから要素を選択すると、ページが自動複製され、問題が見つかりません。別の問題が発生します。

4

2 に答える 2

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;



}

それが他の人に役立つことを願っています

于 2012-04-13T14:29:26.103 に答える
0

それ以外の:

echo($result[0])

試す:

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

成功関数を次のように変更します。

success: function(data.result) {
    $("#SubCategory").add(data.result);
}
于 2012-04-12T02:18:30.857 に答える