3

完全に正常に動作するjqueryタブ内でuploadifyプラグインを使用しています。アップロードが完了すると、uploadify 内で次のようなメールを送信します。

 $('#file_upload').uploadify({
                'fileTypeDesc': 'Image Files',
                'fileTypeExts': '*.gif; *.jpg',
                'swf': 'Scripts/Uploadify/uploadify.swf',
                'uploader': 'FileUploadHandler.ashx',
                'cancelImg': 'Scripts/Uploadify/uploadify-cancel.png',
                'buttonText': 'Browse',
                'onQueueComplete': function (queueData) {
                senEmail();
                }
            });

私のsendEmail機能はReady function以下のようにページの中にあります:

var senEmail = function() {
                var notes = $("#<%=txtMessage.UniqueID%>");

                var msgbox = $("#cerror");
                $("#cerror").hide();
                $.ajax({
                    type: "POST",
                    url: "ContactMe.aspx/SendEmail",
                    data: "{'message': '" + notes.val() + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",

                    success: function (msg) {
                        if (msg.d == 'Sent') {
            var $tabs = $('#tabs').tabs(); // declare the tabs
            $tabs.tabs("url", 5, "/ContactConfirmation.aspx"); // change the URL of the selected tab
            $tabs.tabs("select", 5 + 1); // refresh the tab content
alert("masTEST3");
            $tabs.tabs("select", 5 ); // refresh the tab content
alert("endTEST");
                        }
                        else {
                            $("#cerror").show();
                            msgbox.html(msg.d);
                        }
                    }

                });
            };

上記は電子メールを送信するように正常に機能しますが、ユーザーを確認ページに転送すると、jquery エラーが発生Object Expectedし、同じタブの次のページに転送されません (これは他のページで機能します)。

あなたの助けに感謝。

編集:::

ここにIE9エラーがあります:

SCRIPT5007: Object expected 
jquery-1.8.3.min.js, line 2 character 24275

デバッガーは次の行にあります。

return!t||t!==!0&&e.getAttribute("classid")===t}})
4

2 に答える 2

3

他の誰かが同じ問題を抱えている場合の解決策を見つけました:

タブが変更/リロードされたときにuploadifyオブジェクトを破棄する必要があったため、メールを送信する前に次の行を含めるだけで済みました。

$("#file_upload").uploadify("destroy");
于 2012-12-20T11:21:10.700 に答える
1

私はファッションの後にこの問題を解決しました。

通話中

$("#file_upload").uploadify("destroy");

onUploadCompleteは機能します。しかし、ファイルをアップロードせずに他のものをクリックすると、プロジェクトのすべての JavaScript がクラッシュします。だから私は使い始めました

$("#file_upload").uploadify("destroy"); 

この新しいエラーが発生する原因となったいくつかの場所 (nullまたはundefinedオブジェクトを持つ設定に関するもの)。できないときにdestroyを呼び出そうとしているためだと思います。いずれにせよ、その方法も機能しませんでした。

そこで私uploadify.jsは、uploadify が destroy を実行している間、これらのオプションのいくつかを無効にすることにしました。

uploadify.js でを見つけてdestroy function、これをコメントアウトします

    var $this        = $(this),
    swfuploadify = $this.data('uploadify');
    //settings     = swfuploadify.settings;

以下のようthisに使用しているものはすべてコメント解除します。settings

/*/ 
    // Destroy the queue
    if (settings.defaultQueue) {
        $('#' + settings.queueID).remove();
    }

    // Reload the original DOM element
    $('#' + settings.id).replaceWith(swfuploadify.original);

    // Call the user-defined event handler
    if (settings.onDestroy) settings.onDestroy.call(this);
/*/

これは機能します。また、写真やすべてをアップロードすることもできます。唯一の欠点は、これらのアイテムが何をするかのオプションを失うことです。私の状況では、一度に 1 枚の写真をアップロードするだけなので、これでうまくいきます。あなたはまだ使用する必要があります

$("#file_upload").uploadify("destroy"); 

その中で他のJavaScriptを実行する前にdiv。したがって、uploadify ボタン以外のタブまたはボタンは、それらのボタンを押したときに uploadify を破棄する必要があります。クリック後の最初のアクションである必要があります。

于 2013-03-02T07:09:13.657 に答える