我有以下代码在Windows的localhost中工作。但是在服务器中,相同的代码将失败。
这是if这是没有得到执行,即使写条件data==found; 我查了返回的数据值,它是found,但无法弄清楚为什么代码未正确执行
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"; } } ?>
问题是您的data变量以换行符返回。有两种解决方案:1.修剪返回的值。2.弄清楚为什么php提供新的一行。
data
解决方案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将开始输出缓冲。