2010-11-24 5 views
1

이 코드는 FF, Chrome, IE6/8에서는 작동하지만 Safari 및 Opera에서는 작동하지 않습니다. 이유가 무엇입니까? 난 그냥 $.ajax 전에 alertbox을 넣을 때 경고가 제대로 보여주기 때문에,Jquery Ajax가 Opera와 Safari에서 작동하지 않는 이유는 무엇입니까?

var name = $('#esm').val(); 
     var email = $('#nam').val(); 
     var message = $('#med').val(); 
     var ad_id = $('#i_d').val(); 

    var data_string = 'esm='+ name + '&nam=' + email + '&med=' + message + '&i_d=' + ad_id; 

      $.ajax({ 
       type:  "POST", 
       url:  "/my_php_file.php", 
       data:  data_string, 
       success: function(data) { 
        $('#tip_loader').hide(); 
       if(data==1){alert('success'); } 
       else {alert('error'); } 
         }//end success function 
     }) //end ajax call 

내가 오류를 정확하게은 "아약스"전화를 찾았 : 여기

는 코드입니다. 그러나 성공 함수에 alertbox를 넣으면 아무것도 나타나지 않고 경고도 표시되지 않습니다. 이 내용은 오페라와 사파리에서 일어나는

은 ...

편집 :

는 참고 : 나는 PHP 파일에이 자바 스크립트 파일을 포함하고, 또한 PHP 파일에 파일 jquery.js를 포함한다. 그래서 이것은 모두 외부 파일에 있습니다.

편집 :

/main.php /bin/jquery.js /bin/tip.js /bin/tip.php

나는, main.php에 위의 js 파일을 포함 및 main.php에서 양식 작업이

을 /bin/tip.php로 설정되어 있고 아약스 URL의 경로 대신

+0

무엇이 방화범 소리 죠? :) –

+0

나는 방화범이 잘 듣지 않는다. 어떻게 읽어야 하는가? 또한, FF 전용 방화범이 아니기 때문에 Opera에서 무엇이 잘못 됐는지를 어떻게 알 수 있습니까? –

+0

"인터넷"탭에서 응답과 함께 요청을 찾을 수 있습니다. –

답변

0

오페라 디버깅 도구가 내장되어 my_php_file.php의 /bin/tip.php입니다 잠자리 (Dragonfly). 도구 메뉴 -> 고급 -> Opera Dragonfly
파일 메뉴 막대가 없으면 메뉴 -> 페이지 -> 개발자 도구 -> Opera 잠자리 열기

을 열어보십시오. 그것을 작업하고있는 페이지에서), Scripts 탭을 클릭하십시오 (아마도 페이지를 새로 고치고 그렇게 할 것을 요청할 것입니다). 그러면 외부 js 파일로 내려갑니다. 코드를 찾으면 왼쪽의 줄 번호를 클릭하여 $.ajax() 줄에 중단 점을 설정할 수 있습니다. 이제 코드를 실행하면 자바 스크립트 라인에서 깨지는 것을 볼 수 있습니다. 그런 다음 검사 탭 (하단, 중간)을 사용하여 모든 변수가 올바르게 설정되었는지 확인할 수 있습니다. 자바 스크립트를 단계별로 실행하고 디버깅 할 수도 있습니다. 그것이 당신에게 더 이상 정보를 제공하는 경우

$.ajax({ 
    type: "POST", 
    url: "/my_php_file.php", 
    data: data_string, 
    success: function(data) { 
     $('#tip_loader').hide(); 
     if (data == 1) { alert('success'); } 
     else { alert('error'); } 
    }, //end success function 
    error: function(xhr, textStatus, errorThrown) { 
     alert(errorThrown); 
    } 
}); //end ajax call 

참조 :

당신이해야 할 다른 것은 지금과 같은 오류 함수를 추가합니다.

또한 @Mufasa가 제안한대로 오류 콘솔을 확인하십시오. 잠자리의 오류 콘솔 탭에서 찾을 수 있습니다.

+0

자, errorThrown 메시지가 나타납니다 : "ReferenceError : Security violation"... 어떤 아이디어입니까? –

+0

@Camran - 일반적으로 도메인 간 요청과 관련이 있습니다. 위의 코드가 사용중인 코드와 정확히 일치합니까? 또한 오류 콘솔을 확인 했습니까? –

+0

위의 코드는 정확히 내가 사용하는 것입니다. 또한 오류 콘솔에 일부 CSS 오류가보고되지만 조건부 주석이 있기 때문에 그 오류가있을 수 있습니다. 하지만 css보다 다른 것들과 관련된 오류가 없습니다 ... 그래서이 원인은 PHP 파일 수 있습니까? –

0

정말 알 수있는 방법이 없습니다. PHP 파일을 게시하지 않았습니다. 결과를 알지 못하면 브라우저가 어떻게 반응할지 결정할 수 없습니다.

다른 팁, # 1 당신은 전달되는 값에 대해 encodeURIComponent를 사용하지 않습니다.그것 훨씬 더 간단한 것은 jQuery를 대신 데이터

는 당신을 위해 그것을 할에 도착 : {ESM : 이름, 남 : 이메일, 의대 : data_string, 당신은

데이터가 있어야 메시지를, "i_d"광고 ID }

jQuery가 당신과 올바르게 쿼리 문자열을 생성합니다.

1

Opera에서 기본적으로 파일 허용 XMLHttpRequest는 false입니다. 따라서 설정을 변경해야합니다. Opera 브라우저를 열고 about : config를 입력하십시오. 환경 설정 화면으로 이동합니다. 사용자 환경 설정 폴더로 가면 파일 허용 XMLHttpRequest 설정을 볼 수 있습니다. 확인한 다음 저장하십시오. 그것은 작동해야합니다.

관련 문제