4

概念的な DOM の質問があります。意味があることを願っています。

私のページ(「メイン」と呼びます)にはprototypeJS AJAX Updaterがあり、編集するレコードを選択していて、「ページB」(部分)を「メイン」ページのdivに呼び出します。

パーシャルのフォームをクリックすると、「メイン」の関数が呼び出されますが、アップデーターはパーシャルの div を更新する「想定」されていますが、決して実行されません。メインにレンダリングまたは持ち込まれたため、DOMがそれを見つけることができないと確信しています...

どうすれば解決できますか???

主要

<script>
// pulls page B into Main div
function getItem( id ) {
    var url = 'itemDetails.php'; 
    var pars = { id:id };
    var myAjaxOpts = new Ajax.Updater( 'itemDetail', url, {
            method:'post'
            ,parameters:pars
            ,evalScripts:true
        });
}

// post form and expects messages in 2 places (1) the upated div (on page B) and the message div on Main
// Only main showing up
function assignItem( frm ) {
    var url = 'assignItem.php'; 
    var pars = Form.serialize( frm );
    var myAjaxOpts = new Ajax.Updater( 'subMessage', url, {
            method:'post'
            ,parameters:pars
            ,evalScripts:true
            ,onSuccess: function( response ){
                //console.log( 'request ready to be made' );
                $( 'mainMessage' ).update( response );
            }
        });
}
</script>   

<!-- page A - Main -->
<div id="mainMessage"></div>
<ul>
    <li><a onClick="getItem( 1 );">item 1</a></li>
    <li><a onClick="getItem( 2 );">item 2</a></li>
    <li><a onClick="getItem( 3 );">item 3</a></li>
</ul>
<div id="itemDetail"></div>
<!-- end page A -->

ページ B (部分)

<!-- page B - Partial -->
<div id="subMessage"></div>
<form>
    -- edit record ---
<input type="button" onClick="assignItem( this.form );" ></form>
<!-- end page B -->

ところで-これは「縮小された」サンプルであることに注意してください(また、タイプミスがある可能性があります)。期待どおりにデータを取得しています。AJAXに問題はありません。単にパーシャルのdivがそうではないということですメインの機能に利用できるようです。

どうも

4

1 に答える 1

0

更新するIDを変更するだけです。

これを変える :$( 'mainMessage' ).update( response );

に :$( 'subMessage' ).update( response );

于 2013-05-25T16:10:00.777 に答える