http://dotnet.dzone.com/news/async-file-upload-jquery-and のように、AJAX、JQUERY、および.Net HTTPHandlerを使用して、ファイルをアップロードするページを構築しようとしています。
ファイルを選択してアップロードしたのは初めてです。しかし、次回ファイルを選択しても機能せず、エラーも表示されません。
次のようにjavascriptイベントバインディングを古い学校の方法に変更すると、完全に機能します。しかし、私はJQueryバインディングを使用したいと思います。私が間違ったことはありますか?ありがとう。
<input id="fileToUpload" type="file" size="45" name="fileToUpload" class="input" onchange="return ajaxFileUpload();">
HTMLコード:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:BoundField DataField="StudentID" HeaderText="ID" />
<asp:BoundField DataField="name" HeaderText="Name" />
<asp:TemplateField>
<ItemTemplate>
<input id="fileToUpload" type="file" size="45" name="fileToUpload" class="fileToUpload" >
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
JQueryバインディングコード:
<script>
$().ready(function () {
$(".fileToUpload").change(function() {
$.ajaxFileUpload
(
{
url: 'AJaxUploadHandler.ashx',
secureuri: false,
fileElementId: 'fileToUpload',
dataType: 'json',
data: { name: 'logan', id: 'id' },
success: function (data, status) {
if (typeof (data.error) != 'undefined') {
if (data.error != '') {
console.log(data.error);
} else {
console.log(data.msg);
}
}
},
error: function (data, status, e) {
alert(e);
}
}
)
return false;
});
});
</script>
以下に示すように.onメソッドを使用して、再試行してください
$(".fileToUpload").on('change', function() {
///// Your code
});
これは私のために働いています。
_$(document).on("change", "#inputId", function(){
//Do something
});
_
パフォーマンスのために、$(document)
の使用を避け、このようなラッパーdivでon()メソッドを呼び出すことをお勧めします。
_<div id="wrapper">
<input id="#inputId" type="file"/>
</div>
$("#wrapper").on("change", "#inputId", function(){
//Do something
});
_
直接イベントと委任イベントと関係があります: http://api.jquery.com/on/
同様の問題がありました。まったく同じファイル名をまったく同じ場所にアップロードしようとした場合。その場合、変更イベントは基本的に変更なしと言います。最終的にクリック偶数を使用し、$(this).val()をチェックして、クリックイベントハンドラー内でchangeイベントを呼び出しました。
$("input[type='file']").on('click', function () {
if(!$(this).val()){
//Initial Case when no document has been uploaded
$("input[type='file']").change(function(){
upload_file_setup(this);
});
}else{
//Subsequent cases when the exact same document will be uploaded several times
$(this).val('');
$("input[type='file']").unbind('change');
$("input[type='file']").change(function(){
upload_file_setup(this);
});
}
});
バインド解除は必要ないかもしれませんが、私にとってはうまくいきます。