2011-01-31 6 views
1

내 결혼식을 위해 웹 사이트를 설정하는 데 문제가 있습니다. 누군가가 큰 문제가되기 전에 어떤 문제인지 알기를 바랍니다 :)Ajax 요청시 항상 302 Object Moved 오류

다음 코드는 내 컴퓨터에서 작동하지만 일단 내 서버에 게시하면 포스트 백을 수행 한 다음 imediatly 후에 GET 요청을 수행합니다. GET 요청은 발생하지 않아야합니다.

나는

$.ajaxSetup({ 
     beforeSend: function (xmlHttpRequest) { 

//Used by the server to determine an async request 
      xmlHttpRequest.setRequestHeader('X-Requested-With', 'jQuery'); 

      $.blockUI({ message: '<h3>Please wait...</h3>' }); 
     }, 
     complete: function (XMLHttpRequest, textStatus) { 
      $.unblockUI(); 
     } 
    }); 

코드

를 몇 가지 기본 설정을 가지고 그리고 여기 앵커 태그에 결합 코드입니다했습니다. 나도 행운과 함께 버튼과 입력 요소에서 이것을 시도했다.

$('.basket-btn').click(function (src) { 

     src.preventDefault(); 

     var form = $(src.target).closest('form'); 

     /* If the form contains validatable elements, then set this to false so the validation function is triggered. */ 
     var doWeValidate = !form.find('span[id$=_validationMessage]').length > 0; 

     if (doWeValidate || !Sys.Mvc.FormContext.getValidationForForm(form[0]).validate('submit').length) { 

      var destination = $(src.target).attr('data-destination'); 

      $.post(form.attr('action'), form.serialize(), function (data) { 

       $("#" + destination).html(data); 
      }); 
     } 
    }); 

내가 말하는 문제를보고 싶다면 다음은 내 사이트입니다. 당신이 금액을 입력하고 기여를 클릭하면

http://www.vinceandjeanswedding.com/GiftRegistry/

는 GET 요청 후 바로 따를 것, 그것은 포스트 백을 수행하고 (방화 광에 따라).

도와주세요.

+2

Btw는 축하합니다! – Gidon

답변

1

나는 이것을 처리했다.

방화범이 났을 때 첫 번째 요청서는 항상 302 Object Moved 오류를 발견했습니다.

모든 요청에 ​​슬래시를 넣으면 문제가 해결되었습니다.

그래서 대신 www.site.com/Home는 지금 www.site.com/Home/

여러분의 참여와
+0

IIS 서버가 302 객체 요청의 대소 문자가 일치하지 않으면 이동됩니다. 이를 피하려면 항상 서비스를 설정할 때와 요청할 때 어디서나 소문자를 사용하십시오. – AnthonyVO

0

Chrome에서 처음 제대로 작동하는 것을 확인했습니다. 데이터가 돌아 오면 양식의 모든 내용을 새로 고칩니다. 이제는 (새로운) 컨트 리뷰 션 버튼이 어떤 이벤트에도 구속되지 않습니다.

당신은 첫 번째 바인딩 후에 추가 된 경우에도, 그래서 jQuery를 모든 .basket-btn 이벤트를 잡을 것

$('.basket-btn').live('click', function (src) { 

에 다음

$('.basket-btn').click(function (src) { 

을 변경하고 싶습니다.

UPDATE

파이어 폭스에서 버그가 즉시 발생 않습니다.

이상한 일들이 있습니다. 아약스가 효과가있는 것 같습니다. 그러나 (Ajax에서 모든 스크립트 참조를 포함하여) 전체 페이지를 다시로드하여 잠시 후 큰 루프가 발생하도록합니다 (스크립트를로드하는 데 점점 더 많은 시간이 걸립니다).

+0

시간 내 주셔서 감사합니다. 나는 div # shopping-basket-info의 내부 html 만 교체하기를 원합니다. '.basket-btn'은 바꿀 수 없습니다. –

+0

세부 정보를 얻고 싶지는 않지만 작은 메모 만 있으면 도움이 될 수 있습니다. FireFox는 리디렉션 후 사용자 지정 헤더를 막지 않습니다. 따라서 리디렉션 후에 요청은 AJAX, X-Requested-With처럼 표시되지 않습니다. http://stackoverflow.com/questions/1588589/firefox-does-not-preserve-custom-headers-during-ajax-request-redirect-an-asp-net – queen3