2011-08-16 3 views
-3

이 javascript 코드는 크롬과 IE에서 문제없이 실행되지만 파이어 폭스에 문제가있어, 무엇이 잘못되었는지를 알아야합니까?이 Ajax 코드의 문제점이

<script> 
function checkGurantee() { 
var gurantee = document.getElementById('gurantee_no').value; 
if (gurantee === '') { 
document.getElementById('info').innerHTML = ''; 
return; 
} 
var params = "gurantee_no=" + gurantee; 
request = new ajaxRequest(); 
request.open("POST", "check_gurantee.php", true); 
request.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
request.setRequestHeader("Content-length", params.length); 
request.setRequestHeader("Connection", "close"); 
request.onreadystatechange = function() { 
if (this.readyState === 4) { 
if (this.status === 200) { 
if (this.responseText != null) { 
document.getElementById('info').innerHTML = this.responseText; 
} 
else alert("Ajax error: No data received"); 
} 
else alert("Ajax error: " + this.statusText); 
} 
} 
request.send(params); 
} 
function ajaxRequest() { 
try{ 
var request = new XMLHttpRequest(); 
} 
catch(e1) { 
try{ 
request = new ActiveXObject("Msxml2.XMLHTTP"); 
} 
catch(e2) { 
try{ 
request = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
catch(e3) { 
request = false; 
} 
} 
} 
return request; 
} 
</script> 

그리고 이것은 HTML 일부입니다

<section class="form"> 
<form action="javascript:void()" method="POST" class="formstyle1"> 
    <label for="gurantee">لطفاً شماره گارانتی را وارد نمایید:</label><br /> 
    <input type="text" name="gurantee_no" id="gurantee_no" class="textfield" /> 
    <input type="button" value="جستجو" class="btn" onClick="checkGurantee()" /> 
    <span id='info'></span> 
</form>   
     </section> 
+0

콘솔에 오류가 있습니까? – J0HN

+0

"파이어 폭스와 IE에는 문제가 있습니다."라는 문구가 있습니까? 구문 오류가 있습니까? 실행 오류? 보안? 최대한 자세하게 설명하십시오. –

+0

물론 구문 오류가 있습니다! – user458975

답변

1

수표 그것이

if (gurantee == '') 
{ 
document.getElementById('info').innerHTML = '' 
return 
} 
+0

고마워요, IE 문제는 해결되었지만 파이어 폭스에도 문제가있었습니다 !!!! – user458975

+0

이 문제는 성공적으로 해결되었습니다. tnxX – user458975

0

귀하의 코드는 문법적으로 잘못된해야 해결되지 않은 경우.

  • 예기치 않은 결과가 발생하는 코드의 아무 곳이나 삽입 된 세미콜론 (예 : ;)이 없습니다. JavaScript의 모든 줄 끝 부분에 세미콜론을 추가해야합니다.
  • 여는 중괄호는 다음 줄이 아니라 같은 줄에 있어야합니다.
  • 비교 연산자의 경우 비교에서 유형 변환을 피하기 위해 등호 (==) 대신 Identity/strict equality (즉 ===) 연산자를 사용하십시오.

계속하기 전에이 오류를 수정하십시오.

<script type="text/javascript"> 
    $(function() { 
     $('form').bind('submit', function(event) { 
      var form = $(this), 
       data = form.serializeArray(); 

      $.post(form.attr('action'), data, function(request) { 
       $('#info').html(request); 
      }); 
      return false; 
     }); 
    }); 
</script> 

그리고 당신의 section :

<section class="form"> 
    <form action="check_gurantee.php" class="formstyle1"> 
     <label for="gurantee">لطفاً شماره گارانتی را وارد نمایید:</label><br /> 
     <input type="text" name="gurantee_no" class="textfield" /> 
     <input type="submit" value="جستجو" class="btn" /> 
     <span id='info'></span> 
    </form> 
</section> 
+0

@Gaurish가 말한 것에 추가하십시오. 새로운 것을 만들 때마다 var 키워드를 사용해야합니다. i, e'params = "'는'var params ="'가되어야합니다. –

+0

고맙습니다. 귀하의 모든 통지를 적용하고 코드를 편집했지만 여전히 문제가 있습니다. 다시 확인해 주시겠습니까? – user458975

0

나는 당신의 코드는 다음과 같이 될 것입니다 jQuery를 함께 ...이 목적을 위해 을 jQuery를 사용하는 것이 더 쉬울 것이라고 생각 어떤 중요한 사랑. 전체 붙여 넣기 블록에 세미콜론이 하나도 없으며 JavaScript 파서가이를 자동으로 행 끝에 추가합니다. 따라서 여는 중괄호가없는 모든 행 (모두 포함하지 않음)이 종료됩니다. 세미콜론

  1. 끝은 당신의 문
  2. 제대로 개방 적절한 라인에 중괄호
  3. 넣어 코드를 들여
  4. 재 게시 (또는 편집)가 여전히있는 경우 문제

:)

+0

고맙습니다. 통지를 적용하고 코드를 편집해도 문제가 계속 발생하는지 다시 확인하십시오. – user458975

0

이 코드 요구

+0

감사합니다. 통지를하고 내 코드를 편집하지만 여전히 문제가 있습니다. 다시 확인해 주시겠습니까? – user458975