2016-05-17 10 views
0

フォームでsubmitをクリックすると、AJAX呼び出しが行われます。戻り値がsuccessの場合、システムからファイルをアップロードするためにファイルアップロードブラウザを開きたいとします。このため私はsuccessのjQueryからのトリガクリックを使用しています。しかし、それは動作していません。以下は、AJAX呼び出しのコードです。jQueryトリガーのクリックがAJAXの成功から機能しない

$.ajax({ 
    url: AppManager.defaults.contextPath, 
    data: colMap, 
    contentType: 'application/json', 
    type: 'POST', 
    success: function(data) { 
    if (data.result == 'Success') { 
     $('#continue-upload-input-box').trigger('click'); 
    } else { 
     self.popupView.closePopup(); 
     notify.popup('Error Uploading').error(self.uploadFailureMessage); 
    } 
    }, 
    error: function(error) { 
    console.log(error); 
    } 
}); 

ファイルアップロード用のコードが書かれているところである:

change: function($view) { 
    var self = this; 
    $('<form id="custom-upload" class="input-form-container" enctype="multipart/form-data"></form>').appendTo($view.find('.btn-wrap')); 
    $view.find('.input-form-container').after('<input name="excelFile" type="file" id="continue-upload-input-box" style="display:none;">'); 
    $view.find('#continue-upload-input-box').off('change').on('change', function(event) { 
    if (event.target.files.length === 1) { 
     self.uploadCustomTemplate(new FormData($('#custom-upload')[0])); 
     self.popupView.closePopup(); 
    } 
    }); 
} 

上記のコードで問題がある可能性がありますか?

+0

「DOM」にレスポンスを追加していませんか?あなたが 'DOM'でそれを持っていなければ、あなたは'イベント 'を持つことはできません。 –

+1

あなたの要素の 'click'イベントコールバックが表示されません。あなたは1つを束縛しましたか? – apokryfos

答えて

0

使用

$(document).trigger 

は、ドキュメントを使用する場合、それはあなたのトリガイベントを実行します

$('#continue-upload-input-box').trigger('click'); 

のinsted。あなたのIDがDOMにないときにクリックをトリガーすると実行されないので、DOMを再度ロードする必要があります。

-1

$('#continue-upload-input-box').click();を使用してください。それで十分でしょう。

+0

'.click()'はパラメータなしで '.trigger(" click ")'の省略形です。 – apokryfos

0

jクリックイベントではなく、ドムクリックイベントを処理する必要があります。

試してみてください。 - リンク以下event.referを呼び出すための方法で

$('#continue-upload-input-box').get(0).click(); 
0

最初にあなたの 'data.result' の値 '成功' は正しいであることを確認してください( "#continue-upload-input-box")trigger( "click");これは、次のようになります。

は、私はあなたのコードが適切だと思うが、それはすべてが

0

.triggerは、クリックのような多かれ少なかれであるあなたの他のjQueryコードに依存します。 いくつかのアクション/イベントをトリガーするには、そのエレメントまたはオブジェクトがDOM内になければなりません。 JSからフォームをロードしてDOMに追加した場合、アップローダが表示できる関数は.load関数か、ajaxが起動する前にDOMに追加する方がよいでしょう。

​​

関連する問題