有人能告诉我为什么我的$ .ajax调用没有从我的PHP页面返回数组吗?

时间:2014-04-15 15:36:31

标签: php jquery mysql ajax

我一整天都想弄清楚这一点,而且我正在撞墙(用我的头)。

我有这个HTML:

<!DOCTYPE html>
<html>
<head>
    <title>Construct Films - Interface</title>
    <script src="jQuery.js"></script>
    <script>
    $(document).ready(function(){
        var oXHR; 
        $("#timeSel").submit(function(event){
            if (oXHR){
                oXHR.abort();
            }
            var $form = $(this);
            var $inputs = $form.find("input, select, button, textarea");
            var serializedData = $form.serialize();
            $inputs.prop("disabled", true);
            var iDate = $("input#imageDate").val();
               oXHR = $.ajax({
                    url: "fetch_images.php",
                    type: "post",
                    data: serializedData
                });
            oXHR.done(function (response, textStatus, jqXHR){
                // log a message to the console
                $("#output").text(response);
                console.log("Hooray, it worked!");
                });
            oXHR.fail(function (jqXHR, textStatus, errorThrown){
                // log the error to the console
                console.error("The following error occured: "+textStatus, errorThrown);
                });
            oXHR.always(function () {
                // reenable the inputs
                $inputs.prop("disabled", false);
                });
        event.preventDefault();
        });
    });
    </script>
</head>
<body>
    <div id='usrSelection'>
        <form id="timeSel">
            Select date: <input id="imageDate" name="imageDate" type="date">
            <input type="submit" value="Send">
        </form>
    <div id='output'></div>
</body>
</html>

这是我的PHP:

<?php
    include 'connect.php';
    $username  = mysql_real_escape_string($username);
    $imageDate = mysql_real_escape_string($_POST['iDate']);
    $result = mysql_query("
        SELECT
            *
        FROM
            images AS i
        INNER JOIN
            users AS u ON i.userID = u.UserID
        WHERE
            u.username = '$username'
        AND 
            i.imageDate = '$imageDate'
        ORDER BY
        imageTime
        ASC
    ") or die(mysql_error());
    // populate the imageSelector div with a time selector
    while ($row = mysql_fetch_assoc($result)) { 
        echo $row['imageTime'];
        //echo "<option>" . $row['imageTime'] . "</option>";
    }
?>

我在控制台收到消息&#34; Hooray,它有效!&#34;但我没有从MySQL查询中获得任何实际数据,或者SQL错误......我是AJAX的新手,并试图弄清楚为什么这不起作用。 如果我将php页面更改为

之类的内容
<?php
echo "some stuff";
>

然后我得到那个返回输出div没问题。 谢谢你的帮助。 格雷厄姆

1 个答案:

答案 0 :(得分:2)

您的查询不会返回任何结果,可能是因为以下原因:

$imageDate = mysql_real_escape_string($_POST['iDate']);

应该是

$imageDate = mysql_real_escape_string($_POST['imageDate']);

因为没有iDate表单输入。

此外,$username似乎未在任何地方设置。