2013-02-13 6 views
2

제출 버튼이있는 아약스 양식이 있지만 제출 버튼을 클릭하면 404 페이지를 찾을 수없는 오류가 발생합니다. 내보기의Ajax에서 404 오류가 발생하지만 URL이 올바른 경우

부 :

ajaxOptions 변수는이 같이 정의된다
@using (Ajax.BeginForm("Index", "Maps", null, ajaxOptions, new { @class = "form-search" })) 
{ 
    ... 
    ... 
    <button type="submit" class="btn">Search</button> 
} 

:

var ajaxOptions = new AjaxOptions 
{ 
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "filter-results", 
    LoadingElementId = "filter-loading", 
    LoadingElementDuration = 2000, 
    OnFailure = "showAjaxError", 
    Url = Url.Action("Index") 
}; 

이 지금처럼 내 브라우저 (크롬)에서 렌더링 :

<form action="/Maps" class="form-search" data-ajax="true" data-ajax-failure="showAjaxError" data-ajax-loading="#filter-loading" data-ajax-loading-duration="2000" data-ajax-mode="replace" data-ajax-update="#filter-results" data-ajax-url="/Maps" id="form0" method="post"> <div class="well well-small"> 
     <div class="input-append"> 
      <input type="text" class="span3"> 
      <button type="submit" class="btn">Search</button> 
     </div> 
     <div class="input-prepend pull-right"> 
      <button type="submit" class="btn">Items Per Page</button> 
      <input type="number" name="ItemsPerPage" class="span1" value="10"> 
     </div> 
    </div> 
</form> 

404 오류 :

Requested URL: /Maps 

내 브라우저에이 붙여 넣을 수 있습니다 그것은 작동합니다

http://localhost:7374/Maps 

을 나는 파일이 자바 스크립트 우측 참조하는 것 같아 - 나는이 볼 수있는 페이지 소스에서 상대 :

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.min.js"></script> 
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.min.js"></script> 
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.0/jquery-ui.min.js"></script> 

을 내 Web.config 내가 가진이 :

<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

답변

3
  1. 컨트롤러 MapsController (동작이 Index)이 HttpGet 인 경우에만 확인하십시오. POST 방법으로 보내기 때문에
  2. 이 당신이 필요합니까?
  3. this question을 참조하십시오. 버전 1.9의 jQuery에는 .live 메서드가 없으며 jquery.unobtrusive-ajax.js 파일이이 메서드로 작동합니다. jQuery 1.9 이상에서 작업해야하는 경우이를 변경해야합니다.

포인트 3에 대한 스페인어 솔루션 (link).

+0

또 다른 부끄러운 실수는 작업 메서드에서 액세스 한정자를 잊어 버리는 것입니다. 내 코드를 디버깅하는 데 시간을 할애하고 "public"으로 액션 메소드에 플래그를 지정하지 않았다는 것을 깨달았습니다. – Luther

0

컨트롤러 동작이 HttpGetAttribute로 표시 되었습니까? 당신이 아약스 헬퍼를 사용하는 경우 제가 알기로, 당신은 또한 마이크로 소프트의 아약스 스크립트에 대한 참조를 추가해야합니다 : MicrosoftAjax.js, MicrosoftMvcAjax.js 및 MicrosoftMvcValidation.js이 JQuery와 함께 작동하지 않는 몇 가지 이유를 들어

0

1.9.0 또는 1.9.1 이전 버전과 동일합니다.

작품 :

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 

가 작동하지 않습니다 (404 오류) :

<script src="http://code.jquery.com/jquery-latest.js"></script> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
관련 문제