2009-09-27 119 views
0

我有一個網頁,需要從數據庫中加載一些數據。爲了做到這一點,我使用jQuery的$ .post的功能,它加載一個名爲photoList.php文件,內容如下:通過jQuery的ajax數據不發送

*(photoList.php)* 
<?php 
include 'mysqlConnect.php'; 

$query = mysql_query("SELECT name FROM images"); 
$photoList = Array(); 

while ($row = mysql_fetch_assoc($query)) 
{ 
    $photoList[] = $row['name']; 
} 

echo json_encode($photoList); 
?> 

*(jquery code which **is** being executed)* 
$(document).ready(function(){ 
var photoList; 
var photoCount; 

$.getJSON("photoList.php", {}, processList); 

function processList(data) { 
    photoList = data; 
    photoCount = photoList.length; 
    initialize(); 
} 
}); 
*(this goes on and does some other stuff with initialize()).* 

通過初始化()的數據從數據庫中獲取-image filenames-應該顯示在網頁中。問題是:每當我在我的電腦(Apache,Windows機器)嘗試它時,一切正常,圖像顯示。當我上傳我的虛擬主機(apache,linux機器)時,他們沒有,沒有出現。

這不是它發生的唯一部分;我有另外一個類似的代碼,其中我將一個javascript數組編碼爲JSON,然後通過ajax將它發送給一個php文件,該文件稍後解碼並將數據上傳到數據庫。這又一次,在我的電腦上工作,但是當我上傳它時,它不會。

我試着檢查代碼停止工作的部分,至少在最後一個,數組完全編碼爲json,但後來,當php應該獲取數據時,數組顯示爲空。

任何想法? =/

回答

0

你可能想要確定你的託管網站有你需要的編譯的php庫。

測試此方法的一種方法是允許該函數使用GET參數並通過瀏覽器進行測試。看看是否有任何錯誤返回的PHP頁面。

一旦你知道這個工作,然後使用Firefox,Firebug擴展,並看看通過在螢火蟲的控制檯選項卡發送和接收什麼。

一旦你有更多的信息,然後更新你的問題在這裏,它會更容易幫助你。

+0

遵循你的提示,並用Firebug檢查了php文件的反應是什麼;似乎我的網絡主機在每個頁面插入了一段隨機代碼,其中包含廣告和計數器,這會干擾json編碼。我會檢查是否有辦法避免這種情況,否則我將不得不尋找另一個虛擬主機。非常感謝你:) – nagitsu 2009-09-27 05:08:20

+0

很高興你知道了。 Firebug是我無法想象的沒有Web開發的事情。 – 2009-09-27 05:32:14

0

如果您使用IE,請嘗試在PHP鏈接中傳遞一個隨機哈希(例如,當前時間戳+隨機的5位數字符串)。在IE的情況下,發生這種情況的原因是它爲每個文件創建的「如此之愛」緩存。要找出問題所在,請直接在瀏覽器中打開php文件,然後按F5。

+0

不,我試着用opera,chrome,firefox和ie,但都沒有工作。它似乎不是緩存問題,因爲根本沒有任何顯示。謝謝反正,這個提示可能會幫助我做其他事情:) – nagitsu 2009-09-27 04:59:40

0

非常非常危險的未過濾的mysql。你的麻煩是在PHP方面而不是在jQuery方面。一些服務器實現有加載POST和GET變量的奇怪方式,我相信是這種情況。您的Php腳本根本無法訪問發送給它的數據。嘗試對Php腳本收到的數據執行完整的回顯,並捕獲使用Fiddler發送的內容。