2013-03-29 9 views
1

AJAX Requesting과 PHP에 대한 멍청한 질문입니다. 내 wamp 서버에서 PHP 파일에 대한 GET 요청을하려고하는데 ResponseText가 비어 있습니다. readyState가 4 일 때 상태 코드를 확인하면 0이됩니다.PHP를 사용하여 AJAX 요청의 responseText가 비어 있습니다.

브라우저에서 PHP 파일을 실행할 때 JSON 객체가있는 배열을 기대할 수 있습니다.

답변을 알고 있습니까?

자바 스크립트 코드 :

this.getCars = function(id) { 
    var xmlhttp; 
    if (window.XMLHttpRequest) { 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    var that = this; 
    xmlhttp.onreadystatechange=function() 
    { 

     if (xmlhttp.readyState==4) 
     { 
      alert(xmlhttp.status); 
      //that.lastTableCars = JSON.parse(xmlhttp.responseText); 

     } 
    } 
    xmlhttp.open("GET","http://localhost/getCars.php?q="+id,true); 
    xmlhttp.send(null); 
} 

PHP :

하나
<?php 
$q=$_GET["q"]; 
$con = mysql_connect('127.0.0.1', 'root', 'root'); 
if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("autobay", $con); 

$sql= "SELECT * FROM autoos WHERE id = '".$q."'"; 

$result = mysql_query($sql); 
$info = []; 
while($row = mysql_fetch_assoc($result)){ 
    $info[] = $row; 
} 

echo json_encode($info); 

mysql_free_result($result); 
mysql_close(); 
+0

당신의 PHP 코드에는'?>'이 없습니다 ... – thejh

+1

당신의 코드는 취약합니다. 더 이상 사용되지 않습니다 (mysql) – Sam

+3

'?>'은 필요하지 않습니다. –

답변

2

, 문제 해결을 돕기 위해 jQuery를 사용합니다. 그것은 당신의 삶을 훨씬 더 쉽게 만들어 줄 것입니다. 원시 xmlhttprequest를 사용하기를 원한다하더라도 jQuery를 사용하여 코드에서 xmlhttprequest 문제를 배제하고 실제 문제를보다 신속하게 해결할 것을 제안합니다.

번역 : 원시 xmlhttprequest에 익숙하지 않으므로 jQuery로 전환하는 데 도움이됩니다. 문제가 해결되면 다시 돌아갈 수 있습니다! =)

http://api.jquery.com/jQuery.get/

this.getCars = function(id) { 
    $.get("/getCars.php?q="+id, function(data) { 
     alert("response from server: " + data); 
    }); 
} 

또한 당신이 당신의 서버에서 응답을 검사 크롬 개발 도구 또는 방화범을 사용하고 있는지 확인, 그것은이 실패한 것 가능성이 있습니다.

업데이트 :

는 HTML 페이지 (즉, 아약스 전화를하고있다)와 PHP 스크립트는 동일한 도메인 (로컬 호스트)에서 실행되고 있는지 확인합니다. 귀하의 ajax 호출에 전체 http://localhost URL을 지정하는 것으로 나타났습니다. Ajax는 크로스 도메인에서 작동하지 않습니다 (해결 방법이 있지만 실제로이 크로스 도메인을 수행해야하는 경우 JSONP를 살펴보십시오). 가장 좋은 방법은 PHP 스크립트와 동일한 도메인에서 HTML 페이지를로드하는 것입니다.

업데이트 2 :

실제 문제는 영업 이익은 (하지 http://localhost를 통해) 자신의 컴퓨터에있는 폴더에서 HTML을로드하고 http://localhost에 아약스 호출을 만들려고 한 것이 었습니다. 이것이 기술적으로 교차 도메인이기 때문에 아약스 호출이 실패했습니다.

+0

Firebug가 붉은 색의 ajax 요청을 나타냅니다. – Serf

+0

Firebug가 붉은 색으로 표시되면 이는 서버가 유효한 응답을 반환하지 못했음을 의미합니다. 500 서버 오류와 같습니다. Firebug에서 ajax 호출을 검사하여 서버에서 무엇이 돌아 왔는지 정확하게 볼 수 있어야합니다. 아마도 유효한 ID를 전달하지 않고 데이터베이스 쿼리가 실패했을 것입니다. – jszobody

+0

데이터베이스 쿼리가 실패하지 않습니다. 서버에서 직접 php 파일을 실행하면 원하는 데이터가 반환되기 때문입니다. – Serf

관련 문제