2012-04-05 2 views
2

아래의 코드는 크롬과 콜백 함수 명중되지 않습니다 파이어 폭스에서 그러나 JQuery와 아약스 파이어 폭스 오류

$.get("../ajax/BTBookAppointment.aspx?dsl=" + telNumberBox.value + "&date=" + requiredDate.value + "&timeslot=" + ddTimeslot.value, function (response, status, xhr) { 
//DO some stuff 
}); 

IE

(버전 11.0) 모두에서 잘 작동합니다. 나는 브레이크 포인트와 함께 방화 녀를 사용하고 콜백이 입력되지 않았 음을 확인했다. 페이지가 새로 고침되는 것처럼 보입니다. 이전에 JavaScript로 표시된 요소가 다시 표시됩니다.

나는 버그가 무엇이 될 수 있는지 또는 더 디버깅하는 방법을 잃어 버렸습니다. 어떤 조언을 주시면 감사하겠습니다.

EDIT : Fiddler와 Firebug는 HTTP를 표시하지 않습니다. 또한 명시 적으로 (아래 참조)와 같은 동작을 얻을 갔지 $를 작성하는 시도

EDIT2 : 나는 대린 디미트로프 언급 제안을 시도하고 그것은 여전히 ​​다시 할 때 동일한 동작 (페이지 게시물 exibits 버튼이 클릭 됨). 코드는 그대로 있습니다.

자바 스크립트

function bookAppointment() { 

    var url = "../ajax/BTBookAppointment.aspx"; 
    var dsl = "01753893530" 
    var date = "20-04-2012"; 
    var timeslot = "PM"; 

    var data = { dsl: dsl, date: date, timeslot: timeslot }; 

    $.ajax({ 
     url: "../ajax/BTBookAppointment.aspx", 
     data: data, 
     success: function (response, status, xhr) { 
     alert('into callback'); 
     }, 

    }); 

    return false; 
} 

HTML

<button id="btnBookAppointment" onclick="bookAppointment();"> Book</button> 
+0

http://api.jquery.com/jQuery.get/ jQuery 1.5 이상을 사용하는 경우'error() '처리기를 추가하는 것이 좋습니다. 어쩌면 FF로 오류가 발생합니까? '$ .get (...). error (function() {...});' –

+3

FireBug의 네트워크 탭에서도 요청이 올바른지 여부를 확인하겠습니까? –

+0

그냥 firefox의 네트워킹 탭을 확인하고 피 들러를 실행했습니다. GET은 결코 호출되지 않습니다. (네트워크 트래픽은 표시되지 않습니다.) –

답변

2

나는 왜 모르지만, 버튼이 여전히 bookAppointment()가 false를 반환했을 때 FF로 기본 동작 (포스트 백)을 트리거하고있는 것 같습니다. 버튼에 false를 반환하면 물건이 고정됩니다 (아래 참조).

<button id="btnBookAppointment" onclick="bookAppointment();return false;"> 
+0

Tom, 게시 해 주셔서 감사합니다. 그것은 큰 도움이되었습니다. 왼쪽 필드에서 AJAX 호출이 IE에서는 작동하지만 FF 또는 Chrome에서는 작동하지 않는 이유를 파악하려고했습니다. –

4

그것은 문제가 귀하의 질문에 제공된 정보로부터 수 있습니다 무슨 말을하기가 어렵습니다. FireBug의 Network 탭에서 요청을 보지 못했으며 페이지가 새로 고침되었다고 말하는 것입니다. 이것은 발사를 막을 AJAX 호출 전에 코드에있는 일부 자바 스크립트 오류로 인한 것일 수 있습니다. 또한 일부 DOM 요소의 클릭 또는 제출 처리기에서이 AJAX 요청을 호출하는 경우이 콜백에서 false를 반환하여 기본 이벤트를 취소 할 수 있습니다. 또 다른 요점은 현재하고 있지 않은 GET 매개 변수의 적절한 URL 인코딩입니다.

그래서 여기에 샘플입니다 :

$('#someElement').click(function() { 
    // TODO: adapt the selectors to match your input field ids 
    var dsl = $('#telNumberBox').val(); 
    var date = $('#requiredDate').val(); 
    var timeslot = $('#ddTimeslot').val(); 

    var data = { dsl: dsl, date: date, timeslot: timeslot }; 
    $.get('../ajax/BTBookAppointment.aspx', data, function (response, status, xhr) { 
     //DO some stuff 
    }); 

    return false; 
}); 

또한 당신의 AJAX 요청을 전송하기 전에 발생 될 수 있습니다 자바 스크립트 오류를 ​​파이어 버그 콘솔을 시청하는 것을 잊지 마세요. 이것이 내가 더 오류의 가능성을 좁혀하려고 요청 값을 하드 코딩 시도 할 것입니다 작동하지 않는 경우

는 :

var dsl = '123456789'; 
var date = '2012-04-07'; 
var timeslot = '14:15'; 

var data = { dsl: dsl, date: date, timeslot: timeslot }; 
$.get('../ajax/BTBookAppointment.aspx', data, function (response, status, xhr) { 
    //DO some stuff 
}); 

당신은 스크립트의 다른 부분에 의해 기술을 좁히는이 오류를 적용 할 수 IE와 크롬을 죽이지 만 파이어 폭스를 죽이지 않는 연기 총을 찾을 때까지 일부 값을 하드 코딩 (오류 가능성을 제거함).

+0

제 편집을 참조하십시오. –

0

잘 대부분의 정보가

JQuery와 버전 예컨대 사용할 수 없습니다?

JQuery UI 버전?

아약스 요청이 호출되면?

A) 우선 내 jQuery를 버전이 상대 URL 에 문제가 발생하지 않습니다 있는지 확인하십시오 것이다 [구글 기간 "JQuery와 아약스 상대 URL"]

: 나는 문제가 이런 종류의 디버깅을 할 것입니다 방법은 다음과

JQuery와

$(document).ready(function(){ 
    //your ajax code 
    }); 

C를로드 한 후 아약스 객체가 실제로 생성 된 경우

b)는 이벤트를 시작하는 당신이 전화, 아약스 객체가 생성 된 경우에도 확인) 올바른 방법 또는 이벤트를 확인

추가적인 부가 기능 추가없이

d) 새로운 파이어 프로파일 작성) 정적 URL을 기록하고 새로운 탭 요청 예컨대 오픈 새로운 탭을 모방

http://domain/../ajax/BTBookAppointment.aspx?dsl=xx&date=yy&timeslot=zz 

E 같은 URL을 넣어. 응용 프로그램을 테스트하십시오

얼마나 멀리 이걸 가지고 있는지 알려주십시오. 희망이 도움이 될 것입니다 :)