错误的错误消息在错误的位置打印

时间:2019-07-03 17:23:12

标签: javascript php html ajax mysqli

我正在尝试验证HTML表单,如果提交的格式错误,则会打印出错误。但是,它不会在下面全部显示错误,而是将很长的消息直接打印到表单中。

我尝试过重新格式化几乎所有内容并查找错误,但是到目前为止,我什么都没发现。

在assignment_8_mortgaga_calc.php中。这是调用另一个文件的功能。

function calcMortgage()
    {

      if(XMLHttpRequestObject) {

        XMLHttpRequestObject.open("POST", "assignment_8_mortgage_ajax.php");

        XMLHttpRequestObject.setRequestHeader('Content-Type',
          'application/x-www-form-urlencoded');

        XMLHttpRequestObject.onreadystatechange = function()
        {
          if (XMLHttpRequestObject.readyState == 4 &&
            XMLHttpRequestObject.status == 200) {

              var returnedData = XMLHttpRequestObject.responseText;

              processData(returnedData);
          }
        }

        var amountfinanced = document.getElementById('amountfinanced').value;
    var interestrate = document.getElementById('interestrate').value;

        var data = amountfinanced + '|' + interestrate + '|';

        XMLHttpRequestObject.send("data=" + data);
      }

      return false;

    }

这是用于(理论上)显示错误的表单下的div

<div id="errordiv" style="color: red;"></div>

从另一个文件(assignment_8_mortgage_ajax.php)的HTML表单中接收数据

<?php

$myData = $_POST['data'];  //This receives the data passed from the HTML form

list($amountfinanced, $interestrate) = explode('|', $myData);

进行验证:

//Do Validations

$msg = "ERROR: ";
$error_cnt = 0;

if (empty($amountfinanced))
{
    $msg .= "<br><span class='errormsg'>Please enter an amount </span>";
    $error_cnt++;
} else {
    if (!is_numeric($amountfinanced))
    {
        $msg .= "<br><span class='errormsg'>Amount entered, '".$amountfinanced."' is not numeric  </span>";
        $error_cnt++;
    }
}

if (empty($interestrate))
{
    $msg .= "<br><span class='errormsg'>Please enter an interest rate  </span>";
    $error_cnt++;
} else {
    if (!is_numeric($interestrate))
    {
        $msg .= "<br><span class='errormsg'>Interest rate entered, '".$interestrate."' is not numeric  </span>";
        $error_cnt++;
    }
}

计算抵押贷款:

$interestrate_forcalc = $interestrate / 100 ;

$monthy_payment = ($amountfinanced * $interestrate_forcalc) / 12;

$monthy_payment_formatted = number_format($monthy_payment, 2);

并显示页面:

if ($error_cnt > 0)
{
    print $msg;
} else {
    print $monthy_payment_formatted;
}

?>

Home Page of the Calculator

With Calculated Monthly Payment

When Clicked With Empty Fields

这是显示在小框中的消息: Error Message

很抱歉,我必须仅包含错误消息的图像。当我将其粘贴到文本框中时,它不会全部显示出来。我希望它会显示在“计算付款”按钮下的div中。

任何帮助将不胜感激。预先谢谢你。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我更改了部分内容:

$interestrate_forcalc = $interestrate / 100 ;

$monthy_payment = ($amountfinanced * $interestrate_forcalc) / 12;

$monthy_payment_formatted = number_format($monthy_payment, 2);

if ($error_cnt > 0)
{
    print $msg;
} else {
    print $monthy_payment_formatted;
}

?>

我改成说

if ($error_cnt > 0)
{
    echo $msg;
} else {
    $interestrate_forcalc = $interestrate / 100 ;

    $monthly_payment = ($amountfinanced * $interestrate_forcalc) / 12;

    $monthly_payment_formatted = number_format($monthly_payment, 2);

    echo $monthly_payment_formatted;
}

以便我可以在计算之前检查是否有错误(如aynber所说)。

然后,我进入代码的一部分,内容为:

    function processData(returnedData)
    {

      if (returnedData.substr(0,5) == 'ERROR')
      {
        var errorDiv = document.getElementById('errordiv');
        errorDiv.innerHTML = "ERROR ON DATABASE";
      } else {
        monthlypayment = document.getElementById('monthlypayment');
        monthlypayment.value = returnedData;
      }

      return false;
    }

在这里获取数据并检查是否有错误,我将其更改为:

function processData(returnedData)
    {

        if (returnedData.substr(0,5) == 'ERROR')
        {
            var errorDiv = document.getElementById('errordiv');
            errorDiv.innerHTML = returnedData;
        } else {
            monthlypayment = document.getElementById('monthlypayment');
            monthlypayment.value = returnedData;

            var errorDiv = document.getElementById('errordiv');
            errorDiv.innerHTML = "";
        }

        return false;
    }

现在它可以正确显示错误消息了。

谢谢!