1

我要做的是通过抓取数据库信息并将其放入 javascript 数组来创建幻灯片。我目前正在使用 jquery ajax 函数从单独的 php 文件中调用信息。这是我的php代码:

mysql_connect('x', 'x', 'x') or die('Not Connecting');
mysql_select_db('x') or die ('No Database Selected');

$i = 0;
$sql = mysql_query("SELECT comicname FROM comics ORDER BY upldate ASC");

while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {
echo "comics[" .$i. "]='comics/" .$row['comicname']. "';";
$i++;
}

我想要的是从 mysql 查询在 php 中创建数组,然后能够用 javascript 引用它以构建一个简单的幻灯片脚本。如果您有任何问题或建议,请告诉我。

4

3 回答 3

3

好的,有你的 .phpecho json_encode('name of your php array');

然后在 javascript 端,你的 ajax 应该是这样的:

$.ajax({
        data:       "query string to send to your php file if you need it",
        url:        "youphpfile.php",
        datatype:   "json",
        success:    function(data, textStatus, xhr) {
                        data = JSON.parse(xhr.responseText);
                        for (i=0; i<data.length; i++) {
                        alert(data[i]); //this should tell you if your pulling the right information in

                        }
        });

如果你有很多数据,可能会用 3 替换 data.length 或其他东西......如果你得到正确的数据,请使用 yourJSArray.push(data[i]); 我敢肯定实际上还有更直接的方法...

于 2012-04-25T20:00:15.597 回答
3

您可能希望将所有行提取到一个大数组中,然后将其编码为JSON

$ret = array();
while($row = mysql_fetch_array($sql, MYSQL_ASSOC))
        $ret[] = $row
echo json_encode($ret);

然后,在客户端,调用如下代码:

function mycallback(data)
{
        console.log(data[0].comicname); // outputs the first returned comicname
}

$.ajax
        (
        {
        url: 'myscript.php',
        dataType: 'json',
        success: mycallback
        }
        );

成功完成请求后,mycallback将调用并传递一组地图,每个地图代表您的结果集中的一条记录。

于 2012-04-25T20:02:47.770 回答
2

从您的问题中很难判断,但听起来像:

  1. 您正在 JS 中对您的服务器进行 AJAX 调用
  2. 您的服务器(使用 PHP)响应结果
  3. 当结果返回 jQuery 调用你传递给它的回调......
  4. 而你此时迷路了?IE。将这些 AJAX 结果放入数组以便您的幻灯片可以使用它们的意义是什么?

如果是这样,解决方案非常简单:在您的 AJAX 回调中,将结果放入一个全局变量(例如 window.myResults = resultsFromAjax;),然后在您想要开始幻灯片放映时引用该变量。

但是,由于时间可能会成为一个问题,因此可能更有意义的是从回调中实际开始幻灯片放映。作为额外的好处,这种方法不需要全局变量。

如果这不是您遇到的问题,请发布更多信息。

于 2012-04-25T19:56:06.123 回答