繁体   English   中英

循环无法与php&ajax一起正常工作

[英]Loop not working properly with 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还是很陌生,因此将不胜感激。

造成此问题的原因是,您正在将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."; 
}
?>

问题是在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);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM