2011-12-06 5 views
1

jQuery를 사용하여 ajax-post 요청을 실행하려고하는데 사용자 정의 헤더 (dJango CSRF)를 추가해야합니다. 나는 다음과 같은 몇 가지 코드를 시도했다 :jQuery Ajax beforeSend가 Firefox에서 작동하지 않습니다.

var load = function() { 
    $.ajax({ 
     type: 'POST', 
     url: '/ajax/get_page/', 
     data: $.toJSON({ 
      section: section, 
      subsection: subsection, 
      page: page.page 
     }), 
     beforeSend: function(xhr, settings) { 
      xhr.setRequestHeader("exmpl", "abcdef"); 
     }, 
     success: function (data){ 
      container.html(data); 
      page.init(container); 
      show(); 
     } 
    }); 
} 

그리고 크롬에서 잘 작동하지만 파이어 폭스 (페도라, 파이어 폭스 8, jQuery를 1.7)에서 작동하지 않습니다. 그것은 심지어 beforeSend 함수를 실행하지 않는 것 같습니다.

아이디어가 있으십니까?

+1

beforeSend가 실패하거나 xhr.setRequestHeader ("exmpl", "abcdef"); 당신이 방금 경고한다면 ('무언가'); 거기에? – MattW

+0

befireSend에서 경고를 시도했지만 실패했습니다. Firefox에서 beforeSend는 전혀 실행되지 않음 = ( –

+0

이것은 전혀 도움이되지는 않지만 Firefox 8에서 시도해 보았지만 정상적으로 작동했습니다.이 게시물에 태그를 추가하는 방법에 따라 몇 가지 JS 라이브러리가 있습니다. jQuery와 자신의 스크립트만으로 처음부터 페이지를 시작한 다음 기본 아약스 호출을 시도해보십시오. 그런 다음 1 by 1, 다시 외부 휴식을 취할 때까지 다른 외부 참조를 추가하십시오. . – MattW

답변

0

필자는 단지 여기에서 추측하고 있지만 $ .ajax.beforeSend는 Firefox에서 정상적으로 작동해야하지만 Firefox에서는 setRequestHeader에 알려진 문제가 있으며 일반적으로 setRequestHeader를 실행하기 전에 XMLHttpRequest를 열어야합니다. 하지만이 기본 자바 스크립트, jQuery 내부적으로 어떻게 든 고정되어 있는지 잘 모르겠어요?

뭔가 같은 : 같은 뭔가

xhr.open(method,url,async,username,password); 
xhr.setrequestheader("exmpl", "abcdef"); 

확인 방화범 "오류 : 캐치되지 않는 예외 : [예외 ..."구성 요소가 오류 코드를 반환하는 오류 인 경우 [nsixmlhttprequest.setrequestheader] 0x804b000f "참조 로그인 또는 로그 다른 오류가있을 경우, 여기를 게시

편집 :. 반면에 문서를 읽을 때 $ 아약스 것이 말한다 :

At present, due to a bug in Firefox where .getAllResponseHeaders() returns the empty string although .getResponseHeader('Content-Type') returns a non-empty string, automatically decoding JSON CORS responses in Firefox with jQuery is not supported.

실제로이 기능과 관련이 없기 때문에 이것이 문제와 관련이 있는지 알 수는 없지만 Ajax에 대해서는 jQuery pages에 해결 방법이 있습니다.

관련 문제