2014-06-06 2 views
0

mvc에서 jquery를 통해 .ashx 핸들러 파일을 호출해야합니다.MVC에서 jquery를 통해 .ashx 핸들러 파일을 호출하는 방법

:

은 내가
나 전화 MVC에서 ".ASHX"파일하는 데 도움 주시기 바랍니다 bleow에 코드

$("#btnUpload").click(function (evt) { 

    var fileUpload = $("#file1").get(0); 
    var files = fileUpload.files; 

    var data = new FormData(); 
    for (var i = 0; i < files.length; i++) { 
     data.append(files[i].name, files[i]); 
    } 

    var options = {}; 
    options.url = "FileUploadHandler.ashx"; 
    options.type = "POST"; 
    options.data = data; 
    options.contentType = false; 
    options.processData = false; 
    options.success = function (result) { alert(result); }; 
    options.error = function (err) { alert(err.statusText); }; 

    $.ajax(options); 

    evt.preventDefault(); 
}); 

받고 "Undifine"오류 ..

+0

가능한 복제 (http://stackoverflow.com/questions/16295917 [어떻게 MVC에서 JQuery와 통해 HttpHandler를 전화]/how-to-call-a-httphandler-via-jquery-in-mvc) –

답변

0

아래이 게시물에 봐 시도

How to call a HttpHandler via JQuery in MVC

나의 추천은 AJAX의 캘리포니아의 URL 부분으로 전체 경로를 넣어 또한 가능하면 (예 : "~/shared/fileuploadhander.ashx").

위의 질문에 넣은 것처럼 MVC는 동작으로 호출을 라우팅하려고 시도하지만 백엔드는 바보이며 .ASHX 파일 형식을 처리하는 방법을 알지 못합니다 (이해가 정확하다면).

또한 event.PreventDefault(); 코드 상단에 당신은 본질적으로 클릭 이벤트의 원래 기능을 멈추지 말고 다시 호출하는 것입니다. 그런 다음 마침내 기본 기능을 방해합니다 (잘못된 경우 올바른 수정). 이상과 같이 그것을 구조화 시도,이 두 번 해고되는 이벤트를 중지 할 수 있습니다 :

$("#btnUpload").click(function (evt) { 
    evt.preventDefault(); 

    var fileUpload = $("#file1").get(0); 
    var files = fileUpload.files; 

    var data = new FormData(); 
    for (var i = 0; i < files.length; i++) { 
    data.append(files[i].name, files[i]); 
    } 

    $.ajax({ 
    url: "FileUploadHandler.ashx", 
    type: "POST", 
    data: data, 
    success: function(data){ 
     alert(data); 
    }, 
    error: function(err){ 
     alert(err.statusText); 
    } 
    }); 
}); 
관련 문제