2012-01-05 29 views
0

我试图从mySql数据库获取jQuery的变量。通过ajax从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不显示任何内容。 它应该很容易,但我还没有找到它解释它的例子。

UPDATE

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

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

...但它给“未定义:未定义” - 当我警报数据 - 它工作正常。

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. 
     } 
+0

你的ALERT(DATA)输出了什么。您已在新问题中对其进行了评论,但我们不知道它是否包含“:”。如果没有,它将永远不会正确分裂,因此不能正常工作的原因... – 2012-01-10 13:09:34

+0

它输出21:50 – Algeron 2012-01-10 13:56:50

+0

什么时候do_time被执行?它是在你的Ajax完成后执行的吗?因为阿贾克斯是异步的,这意味着你不知道什么时候会被填充...... – 2012-01-10 14:32:30

回答

1

首先,您的getTime.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 $hours.':'.$minutes; 

然后,另一个问题是,你似乎没有传递到数据在阿贾克斯,并期望它返回一些东西进去。 AJAX数据传递到您的服务器什么,什么被送回的是,你有工作数据,尝试了这一点,而不是:

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

好运

+0

嗨!你可以在这里看看我的新问题吗? – Algeron 2012-01-10 07:49:02

+0

它在哪里?给我这个链接,让人们不必打开你的账户,找到你的新问题?大多数情况下,如果这是一个后续行动,它就变得恰到好处,否则你不应该要求别人直接帮助你...... – 2012-01-10 12:46:23

+0

你在S-O上只有一个问题,那个问题在哪里? – 2012-01-10 12:46:44

1

让我们假设你正在试图让PHP时间从AJAX请求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); 
     } 
    }); 
}); 
+0

嗨!你可以在这里看看我的新问题吗? – Algeron 2012-01-10 07:48:17

1

设置你的jQuery这样。数据字符串变量将像$ _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; 
} 

让我知道如果您有更多问题。