2012-03-08 2 views
0

업데이트 : IE에서는 제대로 작동하지만 Opera, FF 또는 Chrome에서는 작동하지 않는 것 같습니다.클릭시 jQuery Ajax 반환 오류가 발생하지만 Document.Ready로 정상적으로 실행됩니까?

javascript를 사용하여 바인드를 사용하여 sqlite로 데이터를 간단히 가져올 수 있습니다. 내 클릭 기능이 내 간단한 아약스 요청에 작동하지 않습니다.

$(document).ready(function() { 
      $.ajax({ 
       type: 'GET', 
       url: 'dv.xml', 
       dataType: 'xml', 
       success: parseXml, 
       error: function() { 
        alert('XML file not found.'); 

       } 
      }); 
      function parseXml(xml) { 
        //alert('XML file found.'); 
        $(xml).find('Employee').each(function(){ 
         var name = $(this).find('name').text(); 
         var email = $(this).find('email').val(); 
         var jobtitle = $(this).find('jobtitle').val(); 
         var address = $(this).find('address').val(); 
         var workphone = $(this).find('workphone').val(); 
         var homephone = $(this).find('homephone').val(); 
         var cellphone = $(this).find('cellphone').val(); 
         var fax = $(this).find('fax').val(); 
         var contractor = $(this).find('contractor').val(); 

         alert(name); 

        }); 
      } 

     }); 

을하지만 난 내 아약스 요청을 실행하기 위해 클릭 할 때 내를 반환

$("#showDB").click(function(){alert("CLICKED!")}); 

이 잘 작동 : 나는 언제나이 잘 작동합니다 ... 여기 혼란 스러워요 오류 경고 "XML 파일을 찾을 수 없습니다."

$("#showDB").click(function(){ 
     $.ajax({ 
      type: 'GET', 
      url: 'dv.xml', 
      dataType: 'xml', 
      success: parseXml, 
      error: function() { 
       alert('XML file not found.'); 

      } 
     }); 
     function parseXml(xml) { 
       //alert('XML file found.'); 
       $(xml).find('Employee').each(function(){ 
        var name = $(this).find('name').text(); 
        var email = $(this).find('email').val(); 
        var jobtitle = $(this).find('jobtitle').val(); 
        var address = $(this).find('address').val(); 
        var workphone = $(this).find('workphone').val(); 
        var homephone = $(this).find('homephone').val(); 
        var cellphone = $(this).find('cellphone').val(); 
        var fax = $(this).find('fax').val(); 
        var contractor = $(this).find('contractor').val(); 

        alert(name); 

       }); 
     } 

    }); 

왜 나는 클릭 할 때 xml을 얻을 수 없다는 것을 알고 있습니까? 내가 뭘 놓치고 있니?

클릭 코드에

답변

1

나쁜 브라켓이를 사용

$("#showDB").click(function(){ 
    $.ajax({ 
     type: 'GET', 
     url: 'dv.xml', 
     dataType: 'xml', 
     success: parseXml, 
     error: function() { 
      alert('XML file not found.'); 

     } 
    }); 
    }); // needed to close it 

는 편집 : "문서"전화 나던 실패 이유는 부하 안 논의 기능에 캡슐화 된 AJAX와 기능 - 당신이 가지고 온 클릭 코드 그러나 일부 닫는 대괄호가 누락되었습니다

+0

그래서 함수를 클릭 밖으로 두십시오? – jasonflaherty

+0

예 또는 "오류"처리기 할당에 대한 것처럼 annon 함수로 만듭니다. 어느 쪽이든 "괜찮습니다"하지만 만드는 함수가 둘 이상의 요소에 의해 사용될 경우 표준화하고 "해당 요소가 필요한 모든 요소"에 사용할 수있게하는 것이 더 나은 코딩 방법입니다. –

+1

이 작업을 수행했는데, 하지만 쓸데없이 ... 내가 문제를 발견, 내 #showDB 버튼을 양식에 있었고 따라서 양식을 제출하고 모든 것을 묶어려고했다 ... – jasonflaherty

관련 문제