2012-01-05 36 views
0

mySqlデータベースから変数をjQueryに取得しようとしています。mySqlからajax経由で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)によって出力されるもの。新しい質問でコメントしましたが、「:」が含まれているかどうかはわかりません。そうでない場合、それは正しく分割されないので、動作しない理由は... –

+0

出力21:50 – Algeron

+0

do_timeはいつ実行されますか?あなたのAjaxが完了した後に実行されますか? Ajaxは非同期型なので、それがいつ埋められるのかわからないことを意味します... –

答えて

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); 
     } 
    }); 
}); 

幸運

+0

こんにちは!ここで私の新しい質問を見てもらえますか? – Algeron

+0

ここはどこですか?人々があなたのアカウントを開いて新しい質問を見つける必要がないように、私にリンクを教えてください。ほとんどの場合、フォローアップの場合はそれが適切になります、そうでなければ直接あなたを助けるために誰かを尋ねるべきではありません... –

+0

あなたはS-Oに関する質問が1つしかありません。 –

1

のは、あなたが取得しようとしていると仮定しましょうAJAXリクエストからページにPOSTする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']; This isn't needed. 
echo $hour.":".$minutes; 

、別のファイルのためのAjax POSTリクエストを作成:このようなあなたのjQueryを設定

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

こんにちは!ここで私の新しい質問を見てもらえますか? – Algeron

1

を。 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); 
    } 
}); 

もちろん、これは最初の結果のみを時間と分で返します。あなたがそれらのすべてを必要とするなら、あなたはちょうど愚か者に上記を置くだろう。 $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; 
} 

は、あなたがより多くの質問があるなら、私に教えてください。

関連する問題