2012-04-12 4 views
1

외부 페이지에서 AJAX 쿼리를 실행 중이며 카운티의 데이터 만 반환하려고합니다. 현재 스크립트가 모든 표 셀에서 텍스트를 가져 오는 중입니다. 그러나 저의 삶에서 단순히 카운티 이름을 가져올 수는 없습니다.jQuery를 사용하여 특정 텍스트를 가져 오기 <td>

실행되고있는 현재 스크립트 :

$(".zipCode").each(function(intIndex){ 
var zipCodeID = $(this).attr('id'); 
console.log('http://www.uscounties.org/cffiles_web/counties/zip_res.cfm?zip='+zipCodeID); 
$.ajax({ 
    url: 'http://www.uscounties.org/cffiles_web/counties/zip_res.cfm?zip='+zipCodeID, 
    type: 'GET', 
    success: function(res) { 
     var headline = $(res.responseText).find("p").text(); 
     console.log(headline); 
     $('#'+zipCodeID).empty(); 
     $('#'+zipCodeID).append(headline); 
    } 
}); 
}); 

조회되는 페이지의 예 : http://www.uscounties.org/cffiles_web/counties/zip_res.cfm?zip=56159

이 모든 입력 참아을 위해 일해야한다. 페이지 레이아웃은 동일합니다. 단지 카운티 만 반환하는 함수를 얻을 수 없습니다. 어떤 도움이나 충고도 굉장합니다. 감사!

+0

결과에 아무것도 표시되지 않습니까? 교차 도메인 아약스 규칙 때문에 나는 당신이 아무것도 얻지 못할 것이라고 생각하지 않을 것입니다. 나는 경로가 있지만, 현재 코드에서 무엇인가를 얻을 수 있다면 관심이 있습니까? –

+0

예, 현재 스크립트를 사용하여 페이지의 모든 텍스트를 가져올 수있었습니다. – xxdrivenxx

답변

4

해당 페이지에 id 초 및 class 개가 완전히없는 상태에서 계속 진행할 필요가 없습니다. 해당 페이지의 소스에 액세스 할 수있는 경우 id 또는 class을 셀에 붙이면 훨씬 쉽게 사용할 수 있습니다. 그렇지 않다면 카운티를 찾기 위해 페이지 구조에 대해 알고있는 것을 사용해야합니다. 이 같은 것은 귀하가 링크 한 특정 페이지에서 구체적으로 작동합니다. 다른 페이지는 약간의 차이가있는 경우이 오류가 발생합니다 : 이것은 오직 하나의 테이블 페이지와 카운티가 2 행의 3 셀에 항상이다가 있다고 가정

var headline = $(res.responseText).find("table > tr:eq(2) > td:eq(3)").text(); 

.

+0

감사! 그게 내가 필요한 전부 야. 간단하고, 나는 일할 필요가있는 한 번 스크립트에 대해 훌륭하게 작동합니다. – xxdrivenxx

+0

아래 내 메모에 ... 우편 번호에는 여러 카운티가 포함될 수 있습니다. 그것이 당신에게 중요하다면, 당신은 그것을 고려해야합니다. –

0

기본적으로 화면을 긁어 내고 있습니다. 나는 여하튼 당신이 크로스 도메인과 다른 것들 때문에 이것에 문제가있을 것이라고 생각하지만 그것은 그 질문에 부수적이다.

결과 페이지를 탐색해야합니다.

는 구문 분석 코드가 확장 될 작성
var retVal = []; 

// Basically, for each row in the table... 
$('tr').each(function(){ 
    var pTR = $(this); 

    // Skip the header row. 
    if (pTR.find('th').length == 0) 
    { 
     // This is the array of TDs in the given row. 
     var pCells = $('td', pTR); 
     retVal.push({state:$(pCells[0]).text(), place:$(pCells[1]).text(), county:$(pCells[2]).text()}); 
    } 
}); 
// retVal now contains an array of objects, including county. 
if (retVal.length > 0) 
{ 
    alert(retVal[0].county); 
} 
else 
{ 
    alert('Cannot parse output page'); 
} 

, 따라서 다시 모든 데이터를 얻을 : 화면에 오직 한 페이지가 가정, 그것은 뭔가 같이 것이다. 우편 번호를 사용하면 한 카운티 만 다시 얻을 수 있지만 확실히 더 많은 장소를 되 찾을 것입니다. 또한 모든 우편 번호에 여러 가지 이유로 카운티가 첨부 된 것은 아니지만이 경우 빈 문자열을 반환해야합니다.

관련 문제