2016-04-15 74 views
1

我發送兩個變量到我的PHP頁面進行計算,然後回顯最終結果。我的回覆文字總是等於1。Ajax響應文本始終爲1

的JavaScript:

var xhttp = new XMLHttpRequest(); 
xhttp.open("GET","calc.php?w1="+ftest+"&w2="+ltest,true); 
    xhttp.onreadystatechange = function() { 
    if(xhttp.readyState==4) 
    { 
     var dog = xhttp.responseText; 
     alert(dog); 
    } 
    }; 
    xhttp.send(null); 
    } 

的PHP:

我到底VAR設置在這裏的隨機數只是爲了測試,如果我的數學是造成問題。

$startdate = $_GET['w1']; 
$endDate = $_GET['w2']; 
$workingdays = 239; 
echo $workingDays; 
+0

檢查變量在此行'$ workingdays = 239;'應該等於'回聲$ workingDays ;' – Fil

回答

2

$workingDays直接設置爲10(隨機數)。如果它不是10,那麼你顯然看不到這個回聲語句的結果。

1經常被用來作爲輸出到PHP函數,如isset

2

你的情況是錯的。

$workingdays = 239; 
echo $workingDays; 

使它在兩地都工作(與大寫D)。

0

始終使用isset()來接收數據,並且您正在使用變量$workingdays進行聲明並且使用echo $workingDays,照顧這些事情。我希望這會對你有用。

$startdate = ''; 
$endDate =''; 
if(isset($_GET['w1'])) 
{ 
    $startdate = $_GET['w1']; 
} 
if(isset($_GET['w2'])) 
{ 
    $endDate = $_GET['w2']; 
} 

$workingdays = 239; 
echo $workingdays; 
die; 
0

嘗試增加你的Ajax代碼這個變量只是爲了測試,如果在服務器端接收發送你使用GET方法的數據。

var ftest = 1; 
var ltest = 2; 

我認爲你的Ajax代碼是一個功能使裏面說myfunction,你有一個像這樣<a href="#" onclick="myfunction()">link</a>

下面的鏈接是完全實現的代碼假設你的文件名是index.php

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>Ajax</title> 
    </head> 
    <body> 
    <a href="#" onclick="myfunction()">link</a> 
    <script type="text/javascript"> 
     function myfunction() { 
     var ftest = 1; 
     var ltest = 2; 
     var xhttp = new XMLHttpRequest(); 
     xhttp.open("GET","calc.php?w1="+ftest+"&w2="+ltest,true); 
     xhttp.onreadystatechange = function() { 
      if(xhttp.readyState==4) { 
      var dog = xhttp.responseText; 
      alert(dog); 
      } 
     }; 
     xhttp.send(null); 
     } 
    </script> 
    </body> 
</html> 

和Calc.php

<?php 
    $startdate = $_GET['w1']; 
    $endDate  = $_GET['w2']; 
    $workingdays = 239; 
    $result = $startdate + $endDate; 
    echo "$result"; 
?> 

在這個例子中,你警報將等於它是在你的代碼

希望相同的,這將有助於