2012-12-01 34 views
6
@using (Html.BeginForm("Upload", "MyProfile", FormMethod.Post, new 
{ 
    @encType = "multipart/form-data", 
    id = "ImgForm", 
    name = "ImgForm", 
    target = "UploadTarget" 
})) 
{ 
    <input type="file" name="FileUpload" class="filestyle-notext fileupload">     
} 

<iframe id="UploadTarget" name="UploadTarget" style="position: absolute; left: -999em; top: -999em;"></iframe> 

Và thông qua javascript/jquery, tôi đang làm biểu mẫu gửi về thay đổi đầu vào tệp.Truy cập bị từ chối lỗi trong IE khi gửi biểu mẫu thông qua javascript

$('.myprofile .fileupload').change(function() {  
    $('#ImgForm').submit(); 
}); 

Nó phát ra lỗi: Truy cập bị từ chối và Chỉ xảy ra trong IE (tôi đang sử dụng ie8) và hoạt động tốt trong firefox, chrome.

Sau khi đọc trên diễn đàn, tôi thấy có vấn đề với biểu mẫu gửi qua javasript trong IE vì lý do bảo mật nhưng có cách giải quyết nào không? Và tôi không hiểu tại sao IE chỉ làm điều đó khi tất cả các trình duyệt đều hỗ trợ nó. IE có an toàn hơn tất cả các trình duyệt không? ;) Hồ bơi trong đề xuất của bạn xin vui lòng.

+0

Suy nghĩ đầu tiên của tôi là tắt chế độ được bảo vệ. – mrtsherman

+3

* IE có an toàn hơn mọi trình duyệt không? * Lol ... táo bạo. – McGarnagle

Trả lời

9

IE8 không hỗ trợ gọi sự kiện .submit() của biểu mẫu chứa đầu vào tệp từ trong sự kiện .change() của đầu vào tệp này. Đây là vì lý do bảo mật. Bạn đang cố gắng gửi tệp tới máy chủ mà không cần người dùng cho phép điều này một cách rõ ràng. Một cách giải quyết có thể là để gọi .submit() về hình thức từ bên trong một sự kiện .click() của một số nút bạn đã đặt:

$('.uploadButton').click(function() {  
    $('#ImgForm').submit(); 
}); 

Bây giờ khi người dùng nhấp vào một số nút tải lên các hình thức sẽ nộp.

Điều đáng nói là đây chỉ là vấn đề với IE8. Các phiên bản cao hơn và các trình duyệt khác không có giới hạn này.

Ngoài ra, bạn có thể xem xét sử dụng điều khiển tải lên dựa trên Flash chẳng hạn như Uploadify hoặc BlueImp File upload để tải tệp lên máy chủ theo cách trình duyệt chéo.

+0

Cần lưu ý rằng đây vẫn là một vấn đề trong IE10 và cố gắng lừa nó không hoạt động. Bạn không thể gọi sự kiện nhấp qua mã. –

Các vấn đề liên quan