通过ajax从mySql获取变量到jQuery

时间:2012-01-05 15:31:32

标签: php mysql jquery

我正在尝试从mySql数据库获取jQuery的变量。

这是php代码,getTime.php:

include('connect.php');
$sql = "select * from timer";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
    $hours = $row['hours'];
    $minutes = $row['minutes'];
    //echo $hour.":".$minutes;
}
    $timeHour = $_POST['hours'];
    echo $timeHours;

这是另一个文件的ajax POST请求:

    var timeHour = "";
    $.ajax({
        type: "POST",
        url: "ajax/getTime.php",
        data: timeHour
    });
    $(document).ready(function() {
        alert(timeHour);
    });

但是alertBox没有显示任何内容。 它应该很容易,但我没有找到它解释它的例子。

更新

谢谢!但现在我有另一个问题 - 我想使用我的变量“timerHours”和“timerMinutes”......

$.ajax({
                type: "POST",
                url: "getTime.php",
                success: function(data){
                    //alert(data);
                    timerArr = data.split(":")
                    timerHours=timerArr[0];
                    timerMinutes=timerArr[1];
                }
            });

...但是它给出了'undefined:undefined' - 当我提醒数据时 - 它工作正常。

var today = new Date();
var endTime= new Date(today.getFullYear(), today.getMonth(), today.getDate(), timerHours, timerMinutes , 00);
console.log(timerHours+":"+timerMinutes);//Console: undefined:undefined
var second = (endTime.getMinutes()-today.getMinutes())*60+(endTime.getSeconds()-today.getSeconds());

如果我把它放在doTime函数上并将其打印到html它也能正常工作。

function do_time() {
            //console.log(timerHours+":"+timerMinutes);//Console: 21:50
            second--;
            $("#timer").html("Time left: "+second);//Output: Time left: NaN
            $('#setTime').html("Hours: "+timerHours+" Minutes: "+timerMinutes);//Works fine too.
        }

3 个答案:

答案 0 :(得分:1)

首先,你的getTime.php现在可能没有返回任何内容。尝试直接从浏览器中调用它或检查firebug返回的内容。你的代码看起来几乎是正确的,但是你可能已经不存在了$ _POST ['hours'];您的代码应如下所示:

include('connect.php');
$sql = "SELECT * FROM timer";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
    $hours = $row['hours'];
    $minutes = $row['minutes'];
}
echo $hours.':'.$minutes;

然后,另一个问题是你似乎没有传递给你的ajax中的数据,并期望它返回一些内容。 AJAX数据是您传递给服务器的数据,发回的数据是您必须使用的数据,请尝试这样做:

$(document).ready(function(){
    $.ajax({
        type: "POST",
        url: "ajax/getTime.php",
        function(data){
            alert(data);
        }
    });
});
祝你好运

答案 1 :(得分:1)

假设您正在尝试通过AJAX请求将PHP时间用于POST到您的页面。

include('connect.php');
$sql = "select * from timer";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
    $hours = $row['hours'];
    $minutes = $row['minutes'];
//echo $hour.":".$minutes;
}
// $timeHour = $_POST['hours']; This isn't needed.
echo $hour.":".$minutes;

并为另一个文件创建了ajax POST请求:

$(document).ready(function() {
    $.ajax({
       type: "POST",
       url: "ajax/getTime.php",
       success: function(data){
           alert(data);
       }
    });
});

答案 2 :(得分:1)

像这样设置你的jquery。 datastring变量将像$ _POST变量一样传递。所以如果你需要传递一些东西,请把它放在这里。如果没有,请至少将其设为空字符串。

var dataString = 'hours=' + $("field#id").val();

$.ajax({  
    type: "POST", 
    url: "getTime.php",
    data: dataString,  
    success: function(data) {
        //create jquery object from the response html
        var $response=$(data);

        //query the jq object for the values
        var hours = $response.filter('div#hours').text();
        var minutes = $response.filter('div#minutes').text();

        $("label#hours").val(hours);
        $("label#minutes").html(minutes);
    }
});

当然,这只会返回小时和分钟的第一个结果。如果你需要所有这些,你只需将上面的内容放入一个lool中。 $response.filter('div#hours').each()或其他。

然后,在getTime.php

include('connect.php');
$sql = "select * from timer";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
    $hours = "<div id=\"hours\">".$row['hours']."</div>";
    $minutes = "<div id=\"minutes\">".$row['minutes']."</div>";
    echo $hours;
    echo $minutes;
}

如果您有更多问题,请与我们联系。