2013-04-23 42 views
0

我需要你的幫助。在我的PHP代碼中,我創建了一個日期倒計時,它適用於所有內容,但是我的代碼在jquery中遇到了問題。我試圖獲得$ json_result的值。 這是我的PHP代碼:Jquery沒有得到我的價值從PHP文件

<?php 
function addZero($addZero){ 
     return ($addZero < 10) ? '0'.$addZero : $addZero; 
    } 

header('Content-type: application/json'); 

$year_value = date('Y'); 
$end_month = $_GET['month']; 
$end_day = $_GET['day']; 
$end_hours = $_GET['hour']; 

$date = strtotime("$year_value-$end_month-$end_day, $end_hours:00:00"); 
$remaining = $date - time(); 
$minutes = floor($remaining/60); 
$hours = floor($remaining/3600); 
$daysLeft = floor($remaining/86400); 

if($daysLeft > 0){ 
     $remaining_hours = $hours - ($daysLeft * 24); 
    }else{ 
     $remaining_hours = $hours; 
    } 

$remaining_minutes = floor(($remaining - ($hours * 3600))/60); 
$remaining_seconds = floor($remaining - ($minutes * 60)); 

$result = 'Days left:&nbsp;'.$daysLeft.'&nbsp;'.addZero($remaining_hours).':'.addZero($remaining_minutes).':'.addZero($remaining_seconds); 
$json_result = json_encode($result); 
echo $json_result; 
?> 

這是我的HTML jQuery的PHP代碼:

<head> 
<script type="application/javascript"> 
jQuery(document).ready(function(){ 
    $("#submit").click(countDown); 
}); 

function countDown(e){ 
    setTimeout(function(){ 
     $.get('countdown.php',function(data){ 
     $("#countDown").html(data); 
     e.preventDefault(); 
     }); 
     countDown(); 
    },1000);  
} 
</script> 
</head> 
<body> 
<?php 
$monthsArray = array(0 => '0', 1 => 'Jan.', 2 => 'Feb.', 3 => 'Mar.', 4 => 'Apr.', 5 => 'May', 6 => 'Jun.', 7 => 'Jul.', 
8 => 'Aug.', 9 => 'Sep.', 10 => 'Oct.', 11 => 'Nov.', 12 => 'Dec.'); 
$months = array_slice($monthsArray, date('m'), 12, true); 
?> 
<label>Month:</label> 
<select name="month" id="month"> 
    <?php 
     foreach ($months as $values => $keys) { 
      printf('<option value="%u">%s</option>', $values, $keys);   
     } 
    ?> 
</select> 
<?php 
$daysArray = array(0 => '0', 1 => '1', 2 => '2', 3 => '3', 4 => '4', 5 => '5', 6 => '6', 7 => '7', 8 => '8', 9 => '9', 10 => '10', 
11 => '11', 12 => '12', 13 => '13', 14 => '14', 15 => '15', 16 => '16', 17 => '17', 18 => '18', 19 => '19', 20 => '20', 21 => '21', 
22 => '22', 23 => '23', 24 => '24', 25 => '25', 26 => '26', 27 => '27', 28 => '28', 29 => '29', 30 => '30', 31 => '31'); 

    if(date('L') == 0 && (date('m') == 02 || date('m') == 2)){ 
     $days = array_slice($daysArray, date('d'), -3, true); // if it's not a leap year february has 28 days 
    }elseif(date('L') == 1 && (date('m') == 02 || date('m') == 2)){ 
     $days = array_slice($daysArray, date('d'), -2, true); // if it's a leap year february has 29 days 
    }elseif(date('m') % 2 == 0){ 
     $days = array_slice($daysArray, date('d'), -1, true); // even month 
    }else{ 
     $days = array_slice($daysArray, date('d'), 31, true); // odd month 
    } 
?> 
<label>Day:</label> 
<select name="day" id="day"> 
    <?php 
     foreach ($days as $values => $keys) { 
      printf('<option value="%u">%s</option>', $values, $keys);   
     } 
    ?> 
</select> 
<input type="submit" id="submit" value="Submit"> 
<div id="countDown"> 
</div> 
</body> 

誰能告訴我什麼,我做錯了什麼?我正在使用jQuery 1.9.1版本。

+0

可能在ajax調用完成之前重新啓動該功能。 – 2013-04-23 15:19:48

+0

什麼不起作用? – SomeSillyName 2013-04-23 15:23:31

+0

@SomeSillyName我沒有從我的index.php文件中的php代碼中獲得值$ json_result – 2013-04-23 15:32:16

回答

0

刪除header('Content-type: application/json');因爲你已經json_encoding你的返回字符串。在countDown功能

UPDATE

更換$.get$.post

$.post('countdown.php',function(data){ 

發生了什麼事是,由於您使用GET方法,表單值沒有被傳遞到PHP腳本從而導致垃圾價值返回

在countdown.php更改$_GET$_POST

$end_month = $_POST['month']; 
$end_day = $_POST['day']; 
$end_hours = $_POST['hour']; 

您還需要與method='POST'包裹在form的下拉菜單。此外,您需要將下拉值作爲json傳遞給$.post函數。請參閱jquery post函數以瞭解如何完成此操作。

當您張貼,值有像這樣被傳遞:

$.post("countdown.php", { 
    month: document.forms[0].month.value, 
    day: document.forms[0].day.value }) 

此外,在您的形式,沒有時間下拉,但是你想取的是,在countdown.php(這將給垃圾價值)。

所以一堆東西糾正在那裏,但我認爲你應該能夠到達那裏。

+0

是的,我試過,但知道我的倒計時不工作,我得到的月份日期和小時undefined索引.. – 2013-04-23 15:35:23

+0

@IvoKuzmanic:不知道你的設置有什麼不同。當我運行你的代碼時,我得到「剩餘天數:  -15819   0-379648:20:57」作爲結果。 – raidenace 2013-04-23 15:39:54

+0

同樣在這裏,我沒有改變任何設置... – 2013-04-23 15:44:54

0

在PHP代碼中刪除此行:

header('Content-type: application/json'); 

所以,你不必使用json encode輸出結果。

echo $json_result; 
+0

沒有幫助問題是在數據..... – 2013-04-23 16:10:15