2013-11-25 17 views
0

所以我必須文件。正在向PHP文件發出AJAX請求的JavaScript文件,該文件假定返回JSON。我已經用打印語句測試了PHP文件,並且定義了JSON。但是在javascript中,request.responseText是空的。PHP文件不會在.responseText中返回文本

的Javascript:

var mCurrentIndex = 0; 
var request = new XMLHttpRequest(); 
var mImages = []; 
var json; 
var url = "fiveMostRecent.php"; 
request.open("GET", url, true); 
request.send(); 
request.onreadystatechange = function(e) 
{ 
    if(request.readyState == 4 || request.readyState == 2){ 
     console.log(request.responseText); 
     json = JSON.parse(request.responseText); 
     console.log(json); 
     for(var x = 0; x < json.length; x++){ 
      var gImage = new GalleryImage(); 
      gImage.title = json[x].title; 
      gImage.price = json[x].price; 
      gImage.description = json[x].description; 
      gImage.img = new Image(); 
      gImage.img.src = json.images[x].imgPath; 
      makeGalleryImageOnloadCallback(gImage); 
      mImages.push(gImage); 
     } 
    } 
    console.log(mImages); 
} 

PHP:

<?php 
session_start(); 
$con = mysql_connect("localhost", "listAdmin", "hermes"); 
if(!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("GregsList", $con) 
    or die("Unable to select database:" . mysql_error()); 

$query = "SELECT title, description, price FROM Listings ORDER BY dateListed DESC LIMIT 5"; 

$result = mysql_query($query); 

#converts to json 
$rows = array(); 
while($r = mysql_fetch_assoc($result)) 
{ 
     $rows[] = $r; 
} 

#print json_encode($rows); 
return json_encode($rows); 

?> 
+0

你爲什麼註釋掉'print'聲明?這是將結果發送給客戶的正確方法。 – Barmar

+0

如何更改此行返回json_encode($ rows);返回json_encode(數組(「$ rows」=> $ rows)); – Satya

+0

在發送請求之前設置'onreadystatechange'處理程序 - 只需將'request.send()'移動到javascript代碼段的底部。 – 2013-11-25 04:37:44

回答

2

使用echo json_encode($rows);而不是return json_encode($rows);

+0

真相。必須回聲。 – Gor

+0

這工作謝謝你 – Carter