所以,基本上我正在尝试使用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的新手,所以任何帮助都会受到赞赏。
答案 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);
}