数据通过jquery的ajax没有被发送

时间:2009-09-27 04:41:52

标签: jquery ajax json

我有一个需要从数据库加载一些数据的网页。为了做到这一点,我使用jquery的$ .post函数,它加载一个名为photoList.php的文件,如下所示:

*(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()).*

通过 initialize()从数据库获取的数据 - 图像文件名 - 应该显示在网页中。问题是:每当我在我的电脑(apache,windows机器)中尝试它时,一切正常,图像显示出来。当我上传我的webhost(apache,linux机器)时,他们没有,没有任何显示。

这不是它发生的唯一部分;我有另一个类似的代码,我将javascript数组编码为JSON,然后通过ajax将其发送到php文件,该文件稍后解码并将数据上传到数据库。这再次适用于我的计算机,但是当我上传它时,它却没有。

我已经尝试检查代码停止工作的哪个部分,至少在最后一个中,数组被完美地编码为json但是,当php应该获取数据时,数组显示为空。

有什么想法吗? = /

3 个答案:

答案 0 :(得分:0)

如果您正在使用IE,请尝试在php链接中传递随机哈希值(例如,当前时间戳+随机5位数字符串)。在IE的情况下,这种情况发生的原因是它为每个文件创建的“如此喜爱”的缓存。要查明是否存在问题,请直接在浏览器上打开php文件,然后按F5。

答案 1 :(得分:0)

您可能希望确定您的托管网站已根据您的需要编译了php库。

测试此方法的一种方法是允许该函数使用GET参数并通过浏览器进行测试。查看php页面上是否返回任何错误。

一旦你知道它有效,那么使用Firefox,使用Firebug扩展,并通过firebug中的控制台选项卡查看正在发送和接收的内容。

获得更多信息后,请在此处更新您的问题,这将更容易为您提供帮助。

答案 2 :(得分:0)

非常非常危险的未经过滤的mysql放在一边。你的麻烦是在PHP方面而不是jQuery方面。一些服务器实现有奇怪的方法加载POST和GET变量,我相信情况就是这样。您的Php脚本无法访问发送给它的数据。尝试对Php脚本接收的数据进行完整回显,并使用Fiddler捕获正在发送的内容。