小编典典

if(条件在jascript中失败)

ajax

我有以下代码在Windows的localhost中工作。但是在服务器中,相同的代码将失败。

这是if这是没有得到执行,即使写条件data==found; 我查了返回的数据值,它是found,但无法弄清楚为什么代码未正确执行

function checkAvailability() {
  $("#loaderIcon").show();
  jQuery.ajax({
    url: "ajaxcheck.php",
    data:'tran_id='+$("#tran_id").val(),
    type: "POST",
    success:function(data){
      console.log(data);
      //var x=data;
      $("#loaderIcon").hide();
      //console.log((data=="found"));
      if(data=="found")
      {
        $("#singlebutton").prop('disabled', false);
        console.log("fail");
        $("#tran_id-status").html("Found");
      }
      else
      {
        console.log(data);
        $("#singlebutton").prop('disabled', true);
        $("#tran_id-status").html("");  
        console.log("ss");
      }
    },
    error:function (){}
  });
}

这是ajaxcheck.php

<?php
require_once("dbcontroller.php");
$db_handle = new DBController();
$space=" ";

if(!empty($_POST["tran_id"])) {
  $result = mysql_query("SELECT count(*) FROM bank WHERE tran_id ='" . $space.$_POST["tran_id"] . "'");
  $row = mysql_fetch_row($result);
  $user_count = $row[0];
  if($user_count>0) {
     // echo "<span class='status-not-available' id=\"stat\"name=\"stat\" value=\"ok\"> Transaction Details Found.</span>";
    echo"found";
  }else{
      //echo "<span class='status-available' id = \"stat\" name =\"stat\"value=\"not\"> (Enter Valid transaction id to submit)</span>";
      echo"notfound";
  }
}
?>

阅读 252

收藏
2020-07-26

共1个答案

小编典典

问题是您的data变量以换行符返回。有两种解决方案:1.修剪返回的值。2.弄清楚为什么php提供新的一行。

解决方案1:

if(data.trim()=="found")

这使用了JS trim函数https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim。

解决方案2:

尝试?>从PHP文件的末尾删除(PHP文件仍然有效)。这样,如果之后有多余的行,它们将不作为输出,而JS将不会接收它们。

从手册中:

如果文件是纯PHP代码,则最好在文件末尾省略PHP结束标记。这样可以防止在PHP结束标记之后添加意外的空格或换行,这可能会导致不良影响,因为当程序员不打算在脚本中的该点发送任何输出时,PHP将开始输出缓冲。

2020-07-26