[英]Loop not working properly with php & ajax
因此,基本上,我正在尝试使用php和ajax创建一个简单的usd
到pounds
转换器。 我知道使用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.