2011-10-05 3 views
0

제가 여기서 개발중인 사이트의 AJAX 호출이 현재 볼 수있는 페이지의 HTML 태그를 모두 반환하는 이상한 문제가 있습니다. 이 함수는 사용자가 선택한 주와 도시에 대한 데이터베이스에서 우편 번호를 반환해야합니다.AJAX 오류 : 응답은 현재 페이지의 html입니다.

Ajax response

나는 크로스 브라우저 호환성 개발을 쉽게하기 위해이 사이트에 폴 아일랜드어의 HTML5 상용구와 모더 나이저를 사용하고 있습니다. 이전에 문제없이 사용해 보았지만 HTML5 상용구가 사용하는 스크립트 중 하나와 JavaScript 충돌이 발생한다고 생각하기 시작했습니다.

다음은 JS있어 :

function getCitiesFromState(state, select) 
{ 
    if (window.XMLHttpRequest) 
    { 
     x = new XMLHttpRequest(); 
    } 
    else 
    { 
     x = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    var ran = Math.round((new Date()).getTime()/1000), 
    terms = "state="+state+'&r='+ran, loader; 

    x.open("POST", "inc/ajax/cities-from-state.php", true); 
    x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 

    x.onreadystatechange = function() 
    { 
     select == 'fcity' 
     ? loader = 'fzip-loader' 
     : loader = 'tzip-loader'; 

     $('#' + loader).show(); 

     if (x.readyState==4 && x.status==200) 
     { 
      $('#' + select).html(x.responseText); 
      $('#' + loader).hide(); 
     } 
    } 
    x.send(terms); 
} 

내가 jQuery를 광범위한 AJAX 기능을 가지고 알고,하지만 난 항상 쉽게하기 위해 라이브러리 또는 속기를 사용하기 전에 내 코드 뒤에있는 기반 기술을 이해하려고합니다. jQueryUI 함께 할 필요,

<?php 
    include 'db.class2.php'; 

    $DB = new DB_MySql; 
    $DB->connect(); 

    $state = $_POST['state']; 

    $q = $DB->query(" 
     SELECT DISTINCT `city`, `zip_code` 
     FROM `usa_master` 
     WHERE `state` = '".addslashes($state)."' 
     GROUP BY `city` 
     ORDER BY `population` DESC LIMIT 0, 150" 
    ); 

    $count = 0; 
    while($r = $DB->fetch_assoc($q)) 
    { 
     $city[] = $r['city']; 
     $zips[$count] = $r['zip_code']; 

     if (4 == strlen($zips[$count])) 
     { 
      $zips[$count] = '0' . $zips[$count]; 
     } 

     $count++; 
    } 

    array_multisort($city, $zips); 
    echo '<option value="" selected="selected">Select City</option>'; 
    $size = sizeof($city); 

    for($x=0; $x<$size; $x++) 
    { 
     echo '<option class="city_list" value="'.$zips[$x].'">'.$city[$x].'</option>'; 
    } 

    $DB->close(); 
?> 

보조 노트에, 나는 때때로 내가 임의 jQuery를 관련 JavaScript 오류를 받고 있어요 (I 새로 고침 어쩌면마다 10 시간)에 주목하고 있습니다 : 여기

는 PHP의 datepicker 내가 사용하고있어. 나는 여기서 실종 됐다는 상관 관계가 있다고 생각하고있다.

+0

호출되는 URL을 캡처하여 브라우저의 주소 표시 줄에 입력하고 얻은 결과를 확인하십시오. BTW : jQuery를 사용하는 경우 jQuery의 AJAX 핸들러 대신 XMLHttpRequest를 사용하는 이유는 무엇입니까? –

+0

AJAX에 아직 새로운 ... -> jQuery에는 광범위한 AJAX 기능이 있지만, 라이브러리 또는 속기를 사용하기 전에 내 코드의 기본 기술을 더 쉽게 이해하려고 노력합니다. – k4t434sis

+0

나는 대답을 숨길 것 같아 - x.open ("POST", "inc/ajax/cities-from-state.php", true); php ", 귀하의 페이지가 http://www.yourserver.com/ 및 cities-from-state.php가 http://www.yourserver.com/inc/ajax/cities-from-state.php에있는 경우 –

답변

0

@Diodeus 그게 뭐니? 이 새로운 사이트를 템플릿으로 작성하는 동안 모든 자바 스크립트를 먼저 코딩했지만 탐색 구조를 코딩했는데이 .htaccess 규칙 (RewriteRule ^(.*).php template.php?page=$1 [NC])이 내 AJAX 요청을 404 페이지로 리디렉션합니다. 감사!

관련 문제