【问题标题】:Wrong Error Message Prints in the Wrong Place [duplicate]错误的错误信息打印在错误的地方[重复]
【发布时间】:2019-11-14 10:41:57
【问题描述】:

我正在尝试验证 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 中。

任何帮助将不胜感激。提前谢谢你。

【问题讨论】:

  • 您在计算抵押贷款之前是否确保没有错误?
  • @aynber 我将代码更改为如下所示:if ($error_cnt &gt; 0) { print $msg; } else { $interestrate_forcalc = $interestrate / 100 ; $monthly_payment = ($amountfinanced * $interestrate_forcalc) / 12; $monthly_payment_formatted = number_format($monthly_payment, 2); print $monthly_payment_formatted; } 但现在它显示“数据库错误”。
  • ERROR ON DATABASE 没有显示在您的代码中的任何地方,因此您必须追踪它的来源。
  • 谢谢!我发现它并在不久前修复了它。感谢您的帮助!

标签: javascript php html ajax mysqli


【解决方案1】:

我已经解决了这个问题。我改变了说的部分:

$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;
    }

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

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    相关资源
    最近更新 更多