JQuery를 사용하는 데 매우 이상한 문제가 있습니다. 나는 사용자가 2 개의 버튼 : "파일 저장"또는 "그림 없음"을 클릭 할 수있는 파일 업로드 양식을 가지고 있습니다. 두 개는 파일 업로드 필드에 그림이 있는지 여부를 관리하는 컨트롤러와 동일한 컨트롤러를 호출합니다.JQuery 및 MVC3을 사용하여 일부 이벤트가 완료되지 않음 이벤트를 제출하십시오.
이상한 점은 파일 업로드 필드가 비어있는 경우에만 컨트롤러 get이 호출된다는 것입니다. 누군가 사진을 선택했다면 컨트롤러에 들어 가지 않아서 제출이 제대로 작동하지 않는다고 생각하게됩니다. 하지만 내 jQuery 코드의 GET의가 ...라고 항상 true를 돌려 여기
인 document.ready에있는 jQuery 코드 :@using (Html.BeginForm("UploadImage", "Recipe", FormMethod.Post,
new
{
enctype = "multipart/form-data",
id = "ImgForm",
name = "ImgForm",
target = "UploadTarget"
}))
{
<div id="fileuploader">
<h4>Étape 1: Choisir une photo</h4>
<input id="lefile" type="file" style="display:none" name="imageFile" accept="image/x-png, image/jpeg" />
<div class="input-append">
<input id="photoCover" class="input-large" type="text" />
<a class="btn" onclick="$('input[id=lefile]').click();">Parcourir...</a>
</div>
<script type="text/javascript">
$('input[id=lefile]').change(function() {
$('#photoCover').val($(this).val());
});
</script>
<input id="SaveImage" type="submit" class="btn btn-success" value="Sauvegarder l'image" />
<input id="SaveNoImage" type="submit" class="btn btn-danger" value="Aucune photo" />
</div>
}
:
여기
$('#ImgForm').on('submit', function() {
var fileUploader = document.getElementById("fileuploader");
$(fileUploader).hide();
var fileUploader = document.getElementById("informations");
$(fileUploader).show();
//Create a new image and insert it into the Images div. Just to be fancy,
//we're going to use a "FadeIn" effect from jQuery
var imgDiv = document.getElementById("Images");
loadingImg = new Image();
loadingImg.src = "../../Pictures/ajax-loader.gif";
//Hide the image before adding to the DOM
$(loadingImg).hide();
imgDiv.appendChild(loadingImg);
//Now fade the image in
$(loadingImg).fadeIn(500, null);
return true;
});
는 MVC보기 코드
파일 업로드가 비어있는 경우에만 내부에 들어가기 때문에 컨트롤러 코드를 게시하지 않겠습니다.
어떤 아이디어가 잘못 되었나요? 감사
매우 중요 편집
나는 다시 내 SVN 역사에 가서 무슨 일이 생긴 것을보고하기로 결정오늘. 나는 아주 이상한 것을 발견했다. 이 기능을 사용하려면 뷰 자체 (Create.cshtml)에 jquery를 포함해야합니다. 나는 항상 _layout.cshtml에 jquery .js 파일을 포함 시키려고했지만 enougth했지만 그렇지 않았습니다! 따라서이 작업 만 수행하면 Chrome에서 작동합니다.
iframe의 "로드"이벤트가 다음을 실행하기 때문에 이미지가 표시되지 않도록 Internet Explorer에 여전히 버그가 있습니다. "런타임 오류 Microsoft JScript : 액세스가 거부되었습니다." Chrome에서 완벽하게 작동합니다. 어떤 생각 ???
EDIT 2
이 jsfiddle에 코드를 추가 코멘트에 요청했다. 나는 렌더링 된 html을 복사하고 자바 스크립트를 자르고 자바 스크립트 창에 넣으므로 어떻게 작동하는지 잘 모르겠습니다. 지금 당장은 아무 것도하지 못합니다. 왜 그런지 모르겠지만 적어도 전체 그림을 볼 수는 있습니다. 희망이 도움이됩니다. (나는 약간의 수정을 질문에있는 코드와 비교하였으나 문제는 동일 함을 주목하라.) 여기에 문제의 here!
고전적인 아약스 전화로 "손으로"데이터를 보내 봤습니까? 파일을 제출 한 후 404가 표시되지 않았는지 확인 했습니까? 즉, 귀하의 행동이 올바르게 서명되지 않았습니까? –
아니요 시도하지 않았습니다. 나는이 방법을 사용했고 처음에는 잘 작동했다. 필자가 따랐던 원래 기사에서 submit 이벤트를 사용하는 대신 끝에 제출 한 함수를 호출했습니다. 불행히도 IE9에서는 지원되지 않습니다. 따라서 해결 방법은 이벤트를 사용하는 것이지만 이미지가있을 때 제출이 완료되지 못하도록하는 이상한 ... –
true 대신 false를 시도 하시겠습니까? –