0

私はアーカイブを検索し、与えられた例を試しましたが、それでも運がありません。私がやろうとしているのは、divをリロードし、「uid」変数を照会することです。このアクションにセカンダリファイルを使用する必要がありますか、それとも同じページで実行できますか?どんな前向きな助けも大歓迎です。

HTML:

<a id="cms-user-list1" href="#" onclick="clickToSlide(this.id, 'cms-user-orders-detail', '65');return false;">

Javascript:

function clickToSlide(er, cr, user_id)
{
    var pathtopage = 'blah.php';
    var a = parseInt($('#'+cr).css("left"));

    if (a ==50) {
        //SLIDE DIV LEFT AND LOAD UID
        $('#'+cr).animate({"left": "+=600px"}, "slow").load(pathtopage, {uid: user_id});

    } else {
        //SLIDE CURRENT DIV RIGHT, LOAD NEW UID AND SLIDE LEFT
        $('#'+cr).animate({"left": "-=600px"}, "slow"); 
        $('#'+cr).animate({"left": "+=600px"}, "slow").load(pathtopage, {uid: user_id});
    }       
}

更新3/7

問題の正確な解決策を見つけることができなかったので、データを2番目のPHPファイルに投稿しました。今、私はアニメーションに問題があります。どこが間違っているのかを確認するために、これにもう1つ目を向けることはできますか?

function populateDetails(er, div, url, user_id) {        

    var a = parseInt($('#'+div).css("left"), 10);

    // ajax request
    $.ajax({
        type  : 'POST',
         url  : url,
         data : "uid="+user_id,
         beforeSend : function() {
             $('#'+div).html('processing');
         },
         error : function() {
             alert("Something went wrong. Try again.");
         },
         // success callback
         success : function (response) {
            if (a ==50) {
                $('#'+div).animate({"left": "+=600px"}, "slow").html(response);
            } else {
                $('#'+div).animate({"left": "-=600px"}, "slow").html('', function() {
                   $('#'+div).html(response).animate({"left": "+=600px"}, "slow"); // im not certain if `this` will work here
                });
            }            
         },
         timeout : 3000,
    });
};
4

1 に答える 1

0

注: jQuery を使用するのはあまり好きではないので、コードが機能しない可能性があります。

同じファイルを再利用できない理由がわかりません(ローカルにキャッシュしないようにするために何かをする必要があるかもしれませんが)

divのロード/リロードの処理方法を変更したいと思うかもしれません。

以下は (うまくいけば) コンテナをスライドさせ、コンテンツの (再) ロードを開始し、ロードが完了するとコンテナをスライドさせて戻します。(チェーンの順序が正しいことを願っています。どの方向に実行されるかはわかりません!)

$('#'+cr).animate({"left": "-=600px"}, "slow").load(pathtopage, {"uid": user_id}, function() {
   $(this).animate({"left": "+=600px"}, "slow"); // im not certain if `this` will work here
});

コンテンツが点滅する可能性を回避するために.load()、完全なコールバックによって が起動される可能性があります。animate()

アップデート

あなたの問題は、あなたの引数erdivurlおよびuser_idが失われていることだと思います(事実はわかりません)。context パラメーターを追加し、コールバックがないため、最後のものをに変更$('#'+div)$(this)て再注文しました。.html().animate()

function populateDetails(er, div, url, user_id) {        
     $.ajax({
        type: 'post',
        url: url,
        data: 'uid='+user_id;
        context: $('#'+div),
        beforeSend: function() {
            $(this).html('processing');
        },
        error: function() {
            alert("Something went wrong!");
        },
        success: function(response) {
            var a = parseInt($(this).css('left'), 10); 
            if (a == 50) {
                $(this).animate({'left': '+=600px'}, 'slow').html(response);
            } else {
                $(this).animate({'left': '-=600px'}, 'slow', function() {
                    $(this).html(response).animate({"left": "+=600px"}, "slow");
                }).html('');
            }   
        },
        timeout: 3000
     });
};

「問題」をもう少し説明できれば、役に立ちます:)

于 2013-02-24T21:55:22.507 に答える