0

ビューには、次のようなドロップダウン リストがあります。

<div class="input select"><label for="customer">Customer</label><select name="data[Project][customer_id]" id="customer">
<option value="16">Customer1</option>
<option value="17">Customer2</option>
</select>

私がjQueryでやろうとしているのは、ページの読み込み時またはドロップダウン選択の選択変更時に、jqueryが指定されたオプション値でコントローラー関数を呼び出し、関数から期待される戻り値を取得することです。以下はコントローラー部分です。

public function getInitials($id){
         $this->autoRender = false;
         if($this->request->is('ajax')){
             $initials = $this->Customer->getInitialsById($id);
                     echo json_encode($initials);

    }}

JQueryは私が得意とするものではありませんが、調査を行い、同様の機能を使用して機能させようとしましたが、何も機能せず、完全に間違ったことをしていると感じています. jQuery は次のとおりです。

    jQuery(document).ready(function($){

        $('#customer').change({
       var initials = "";
       $("select option:selected").each(function(){
            initials = "<?php echo Router::url(array('controller'=>'projects','action'=>'getInitialsById')) ?>"
});
$("div").text( initials );
        });

どんな助けでも大歓迎です。

4

2 に答える 2

0

ドロップダウン リストからオプションが選択される前に発生するため、ドキュメントの読み込み時に AJAX 呼び出しを行うのは意味がありません。

したがって、オプションが選択されたときに AJAX 呼び出しを行うには、次のコードを追加します。

$('#customer').change(function(){
    var data = $('#inputEl option:selected').val();

    $.ajax({
        type:'POST',
        async: true,
        cache: false,
        url: <?php echo Router::url(array('controller'=>'projects','action'=>'getInitialsById')) ?>,
        success: function(response) {
            jQuery('[ID OF ELEMENT TO HOLD REPONSE (OPTIONAL)').html(response);
        },
        data: data
    });
    return false;
})

テストはされていませんが、うまくいくはずです。

于 2013-11-07T23:18:47.863 に答える
0

AJAX 呼び出しを適切に設定する必要があります: http://api.jquery.com/jQuery.ajax/http://api.jquery.com/jQuery.getJSON/

また、関数宣言で定義されているように、AJAX 呼び出しでvalue (id)新しく選択した の を指定する必要があります。後者は前者によって呼び出されるため、 ではなく request していることに注意してください。customer <option>getInitials($id)getInitialsgetInitialsById

最後に、うまくいくとは思えませんecho。あなたがする必要があります$this->response->body(json_encode($initials));http://book.cakephp.org/2.0/en/controllers/request-response.html#CakeResponse::body

于 2013-11-07T17:37:06.647 に答える