2012-01-05 26 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; 
} 

讓我知道如果您有更多問題。