0

__doPostBack を使用して、クライアントからサーバー側にデータを渡そうとしています。私は JS にあまり慣れていませんが、Firebug でデバッグすると奇妙なことが起こります。最初にコードを示します。

<script type="text/javascript">
function BeginDownload() {
        var temp = $("#waterwheel-carousel-horizon").CurrentSelectedImg().toString()
        __doPostBack("ImgDownload", temp);
}
</script>

これは、私が呼び出そうとしている関連する jquery です。

// Relevant Waterwheel jquery code.
$.fn.CurrentSelectedImg = function () {
        return data.currentCenterItem.data().index; };
$.fn.waterwheelCarousel = function (options) {

        // override the default options with user defined options
        options = $.extend({}, $.fn.waterwheelCarousel.defaults, options || {});

        return $(this).each(function () {

            /* These are univeral values that are used throughout the plugin. Do not modify them
            * unless you know what you're doing. Most of them feed off the options
            * so most customization can be achieved by modifying the options values */
            var data = {
                itemsContainer: $(this).find(".carousel-images"),
                totalItems: $(this).find(".carousel-images img").length,
                containerWidth: $(this).width(),
                containerHeight: $(this).height(),
                currentCenterItem: null,
                items: [],
                itemDistances: [],
                waveDistances: [],
                itemWidths: [],
                itemHeights: [],
                itemOpacities: [],
                carouselRotationsLeft: 0,
                currentlyMoving: false,
                itemsAnimating: 0,
                currentSpeed: options.speed,
                intervalTimer: null
            };

            // Setup the carousel
            beforeLoaded();
            // Preload the images. Once they are preloaded, the passed in function
            // will be called and the carousel will be setup
            preload(function () {
                setupDistanceArrays();
                setupCarousel();
                setupStarterRotation();
            });

そして舞台裏のコード。現時点では届いていません。

// This code is currently not reached, but I put it here for completion.
#region EventTarget
private string EventTarget
{
    get{
        return Request.Form["__EVENTTARGET"].ToString().ToUpper();
    }            
}
#endregion EventTarget

#region HandlePostBack
void HandlePostBack()
{
    switch (EventTarget)
    {
        case "ImgDownload":
            DownloadImage(EventArgs);
            break;
    }
}
#endregion HandlePostBack

private void DownloadImage(string index)
{
    string test = index;
}

最終的に何が起こるかというと、linkbutton をクリックすると firebug がコードの最初の行にジャンプしますが、その関数が終了する前に、変数を渡す前に突然 __doPostBack 関数のコードにジャンプします。なぜこうなった?

それが違いを生む場合は、DNNでこれを行っていることにも言及する必要があります。問題は、そのjquery関数の作成方法または呼び出し方法にあると思います。

4

1 に答える 1

1

問題が見つかりました。コード内で jquery が配置されている場所に移動する必要がありました。ブラケットの内側になかったため、データを表示できなかったと思います。インテリセンスの欠如とまとまりのないコードが再び襲いかかります! 次に、そのダウンロード関数を記述します。

于 2012-06-21T12:54:59.993 に答える