使用php&循环无法正常工作阿贾克斯

时间:2017-12-14 04:15:06

标签: javascript php ajax

所以,基本上我正在尝试使用php和ajax创建一个简单的usdpounds转换器。我知道使用jQuery会更容易,但这是一个赋值,不允许使用jQuery。下面是我正在处理的代码,但是当我运行时它给了我“请确保输入是一个有效的数字。”即使我肯定在输入一个数值。我一直在寻找几个小时来试图找出如何解决这个代码,所以我希望有人能给我一些见解。

HTML

  <form method="get" action="">
            <label for="damount">Dollars to Convert:</label>
             <input type="text" name="damount" id="damount">

       <div>
       <input type="button"value="go" onclick="submitForm();">
       </div>
<p id="results"></p>
</div>

     </form>

AJAX

     var http2 = createRequestObject();
  function createRequestObject() {
      var ro;
      var browser = navigator.appName;
      if(browser == "Microsoft Internet Explorer"){
          ro = new ActiveXObject("Microsoft.XMLHTTP");
      }else{
          ro = new XMLHttpRequest();
      }
      return ro;
  }

  function submitForm() {

     http2.open('get', 'calculations.php');
     http2.onreadystatechange = toCalc;
     http2.send(null);
  }


  function toCalc() {
    if(http2.readyState == 4){
        document.getElementById("results").innerHTML = http2.responseText;
    }
  }

PHP

if (isset($_REQUEST['damount']) && is_Numeric($amount))
 {
    $rate = 0.80;
    $amount = $_REQUEST['damount'];
    $money = $rate * $amount;
    echo '£' . number_format($money, 2, '.', '');
}

else
{
echo "Please make sure entry is a valid number.";
}

我仍然是aJax的新手,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

问题是因为您正在向服务器发送GET http请求,但您没有将数据发送到服务器。在调用函数时,您必须使用查询字符串将数据传递给服务器。

在Ajax文件中进行更改

function submitForm() {

damount = document.getElementById("damount").value;

http2.open('get', 'calculations.php?damount=' + damount);
http2.onreadystatechange = toCalc;
http2.send(null);
}

在php文件中,现在可以使用damount。 在php文件中,$ amount变量在is_numeric函数中是未定义的。因为它已在条件检查后的块内定义。 所以做一些改变

<?php

if (isset($_REQUEST['damount']) && is_Numeric($_REQUEST['damount'])) 
{ 
$amount = $_REQUEST['damount'];
$rate = 0.80;
$money = $rate * $amount;
echo '£' . number_format($money, 2, '.', '');
}
 else 
{ 
echo "Please make sure entry is a valid number."; 
}
?>

答案 1 :(得分:0)

问题在于ajax你必须传递值$ _REQUEST ['damount']。当你正在做 get 请求时,你应该将它作为查询字符串传递。

 function submitForm() {
      var amount = document.getElementById("damount‌​").value;
      http2.open('get', 'calculations.php?damount=' + amount);
      http2.onreadystatechange = toCalc;
      http2.send(null);
    }