2

私はこれを達成するための適切な方法を研究し、学ぼうとしています。私は次のことを行いましたが、フォームに変更はありません。ajax呼び出しが行われているかどうかを確認する方法はありますか? 誰かがこのコードを修正して、フォームのフィールドに変更が加えられない理由を理解できますか?

私のモデルでは、次の関数があります

     public function standardRate($country) 
    { 

    $country_std_rate = Yii::app()->db->createCommand()       
       ->select('AVG(rate_syr_mh)')       
       ->from('packaging_metrics')       
       ->where(array('like', 'country', '%'.$country.'%'))    
       ->queryRow();    

            echo CJSON::encode($country_std_rate);  

    }    

私のコントローラーでは、この関数を追加し、すべてのアクセス制御に「countryRate」を追加しました

public function countryRate() 
    { 
            $input_country = $_POST['country']; 

            $model = PackagingMetric::model()->standardRate($input_country); 
            echo CJSON::encode($model);  

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

            $this->render('countryRate',array( 
                    'model'=>$model, 
            )); 

    }

これは私のフォームでの私のJquery呼び出しです

  $('#PackagingMetric_std_rate').live('click',function() 
    {  

 var country =  $('#country').val();  

       $.ajax({  
               type: 'POST',  
               url: 'PackagingMetric/countryRate',  
               data: {country:country},  

                           success: function(data)  
                               {                                                      

                $('#PackagingMetric_std_rate').html(data); 

               } 

                               }); 

             });

Yii-Debug-toolbar を使用していますが、フォームの適切なフィールドをクリックしても POST 呼び出しや SQL クエリが表示されません。

4

3 に答える 3

2

コントローラーの関数の名前を actionCountryRate() に変更します

コントローラに対してポスト リクエストが行われると、アクション プレフィックスを使用してアクションが検索されます。

于 2012-07-18T16:19:40.713 に答える
1

is wrongurlパラメータが間違っている可能性があります。$.ajax();

つまり、エントリ スクリプト ( index.php ) を非表示にしない場合は、次のように記述する必要があります。

url: 'index.php/controllername/actionname'

それ以外の:

url: 'controllername/actionname'

使用する方が良いでしょうcreateUrl()

url: '<?php echo $this->createUrl('PackagingMetric/countryRate'); ?>'

(もちろん、echo上記とjsにphpコードを含める方法は、そもそもjsをどのように含めるかによって異なります)

そして、countryRate の名前をactionCountryRate().

于 2012-07-18T16:18:25.237 に答える
0

ajax呼び出しを起動するときに絶対URLを使用することを検討しています。この方法で URL を作成してみてください。問題が解決します。

url: '<?php echo Yii::app()->createAbsoluteUrl('PackagingMetric/countryRate');           ?>',   

また、コントローラーのアクション名は「actionCountryRate」にする必要があります。この関数は、コントローラーから内部的に呼び出されるのではなく、URL からヒットするためです。また、アクセス制御を使用している場合は accessRule を設定します。そうしないと、関数は実行されません。

于 2012-07-19T05:29:29.987 に答える