2012-05-28 5 views
0

가 여기 내 액션 코드이며,이 현재 단지 내 ASP MVC의 첫 번째 행이에 중단 점을 가지고jQuery를 서버에 게시하지 성공적으로

//[HttpPost] 
public JsonResult BuildingBookings(string buildingName) 
{ 
     var result = new BuildingBookings_Result(); //This has a breakline on it 
     //Uninteresting code to populate result 
     return Json(result, JsonRequestBehavior.AllowGet); 
} 

테스트 목적으로 GET 할 수 있습니다, 나는 테스트 목적으로이 작업을 트리거 할 수 있습니다 브라우저

http://localhost:22468/Buildings/Bookings?buildingName=DoesNotExist 

에 다음 URL을 사용하여 예상되는 결과는

{"Success":false,"Message":"Building not found","Data":[]} 
을 반환그러나 jQuery에서 정확히 동일한 작업을 수행하려고하면 ASP MVC 작업의 중단 점이 실행되지 않습니다. GET을 사용 하던지 POST를 대신 사용하기 위해 관련 코드를 모두 수정하든 동일합니다. 나는에 대한 응답에 적절한 헤더를 추가로 이것은 CORS 문제되지 않습니다 :
//Source code in browser using Ajax 
<script> 
     $("#MainForm").submit(
       function() { 
         alert("Calling"); 
         $.ajax({ 
           url: "http://localhost:22468/Buildings/Bookings", 
           data: { buildingName: "DoesNotExist" }, 
           type: "GET", 
           success: function (result) { 
             alert("Call OK"); 
             alert("Status " + result.Success); 
             alert("Message" + result.Message); 
             alert("Building name " + result.Data.Name); 
             alert("Sleeps " + result.Data.Sleeps.toString()); 
           }, 
           error: function (request, status, errorThrown) { 
             alert("Call Fail"); 
             alert("status " + status); 
             alert("request " + request.toString()); 
             alert("error " + errorThrown.toString()); 
           } 
         }); 
         return false; 
       }); 
</script>  

나는, 상태 = "오류"

UPDATE는 "실패에 전화"다음에 "호출"경고를 얻을 도메인 간 호출을 허용하십시오. 코드는 GET과 함께 작동하지만 POST 나 jsonp와는 $ .ajax 유형으로는 작동하지 않습니다. (분명히 [HttpPost]를 처음에 넣었습니다)

답변

0

html 파일을 // 파일에서 열거 나 다른 파일에서 가져온 경우 도메인/포트 인 경우 도메인 간 쿼리이기 때문에 보안 예외가 있습니다.

가장 일반적인 솔루션은 JSONP을 사용하는 것입니다.

또 다른 하나는 CORS 인은 (나는이 솔루션 과거에 호환성 문제가 있었다하지만 당신은 최신 브라우저를 사용하는 경우 당신은 괜찮을 것).

+0

나는 HTTP를 사용하고 있습니다 : 클라이언트와 // localhost를. Access-Control-Allow-Origin은 GET을 사용할 때 문제를 해결하지만 JSONP는 사용하지 않습니다. –

관련 문제