2010-02-17 7 views
0

인터넷 검색이 끝난 후 해결할 수없는 이상한 문제가 있습니다. 내 웹 응용 프로그램의 빌드 방식이 최적은 아니지만 지금 당장은 아무 것도 할 수 없습니다.파이어 폭스에서 아약스 성공이 트리거되지 않았습니다.

나는 C#에서 사용자 정의 컨트롤을 만들었습니다. 이 사용자 정의 컨트롤은 iframe 내부에있는 aspx-page에 의해 호스팅되며이 페이지는 다시 프레임 안에 있습니다. (최적이 아님).

하지만 중요한 것은 외부 프레임뿐입니다. 호스팅 페이지가 다른 페이지/부품과 다른 도메인에 있습니다.

내 프레임이이 프레임 안에 있습니다. 서버에서 새 데이터를 감지하면 데이터를 업데이트하는 jquery 스크립트가 있습니다. 데이터를 얻으려면 jquery-ajax를 사용합니다.

var indexURL = "/data/indexProxy.aspx"; 

__LOG("Lets get the XML"); 
$.ajax({ 
    url: indexURL, 
    type: 'GET', 
    dataType: 'xml', 
    contentType: "text/xml; charset=\"utf-8\"", 
    error: function(request, error) { 
     alert('Error loading XML document' + request + error); 
    }, 
    success: function(xml) { 
     __LOG("ajax success..."); 
     OnSucceededXml(xml); 
    } 
}); 

__LOG 함수는 방화 광 콘솔에 쓰기 만합니다.

따라서이 코드는 문제가 발생할 때까지 훌륭하게 실행됩니다. 그것이 어떻게 일어날 지 잘 모르지만, 때때로 함수가 실패하거나 intrrupted하게되면, 그것은 단지 작동을 멈춘다. Ajax 함수 내에서 페이지를 다시로드하는 것과 관련이 있다고 생각합니다.

이 일이 끝나면 성공 기능은 절대로 발휘되지 않습니다. 방화범 쟁이 집에서는 XML을 볼 수있는 메시지를 볼 수 있습니다. 아약스 호출이 트리거임을 알 수 있으며 200 또는 304 (수정되지 않음)를 반환합니다. 그러나 성공 내부의 __LOG는 트리거되지 않으며 기능도 없습니다.

다시 작동 시키려면 파이어 폭스를 완전히 다시 시작해야하며 때로는 캐시를 비우십시오.

다른 도미노의 프레임 안에있는 프레임을 프레임 외부에서 열면 모든 것이 다시 작동하지만 앱의 일부로이 작업을 수행 할 수는 없습니다.

누구나 simular를 경험 했습니까? 또한 나는 오래된 스크립트에서 어떤 것을 simmular로 expriens 한 것처럼 이것은 jquery와 관련이있다.

감사

Endre

+0

다른 브라우저를 사용해 보았습니까? 그 효과는 무엇입니까? –

+0

저는 파이어 폭스 만 시도했습니다. 그것은 IE에서 결코 일어난 적이 없는데, 파이어 폭스. – Endre

답변

0

이 때문에 당신은 내가 파이어 폭스의 기본 정책에 의해 금지되어 생각 파이어 폭스에서 크로스 도메인 요청을하고있는 사실이 될 수 있습니다. 분명히 당신은 tweak the setting 일 수 있지만, 인터넷 연결 사이트의 경우, 나는 그것이 비행 할 것이라고 생각하지 않으며, 당신은 다른 방법을 찾아야 할 것입니다.

Firebug의 콘솔 창에서 출력을 추적 했습니까?

+0

도메인 간 요청과 관련 될 수 있지만 요청한 페이지와 ajax 소스는 모두 동일한 도메인에 있습니다. 그것은 단지 다른 페이지의 프레임에 포함되어 있습니다. 대부분의 경우 작동하지만 때로는 작동을 멈추는 경우가 있습니다 ... 매우 이상합니다. firebur 콘솔은 ajax 호출 전에 로그 라인을 출력하고 호출은 200 리턴 코드와 함께 리턴합니다. – Endre

+0

와우, 정말.따라서 200 개의 리턴 코드를 볼 수 있으며 Firebug 내부에서 호출의 출력을 볼 때 마크 업이 예상대로 표시되거나 아니면 형식이 잘못되어 jQuery를 혼란스럽게 만들 수 있습니까? –

+0

그게 이상해. 반환 된 데이터는 양호한 것처럼 보이며 success 함수의 첫 번째 코드 줄은 firebug 콘솔에 로그하는 것이지만 트리거되지는 않습니다. 나는 골볼을 거짓으로 설정하려고 시도했습니다. 문제는 글로벌 Ajax 이벤트 핸들러에있을 수 있다고 생각합니다. – Endre

0

async: false,을 전화 해보십시오.

"ajax 함수 내에서 페이지를 다시로드하십시오."

+0

내가 멘토하는 것은 오류가 항상 존재하지 않는다는 것이다. 때로는 더해져서 다시 만들 수 없습니다. 나는 페이지가 어떻게 든 아약스 호출을 방해 할 때 일어난다 고 생각한다. – Endre

관련 문제