【问题标题】:Disable Submit Button Based on Ajax response禁用基于 Ajax 响应的提交按钮
【发布时间】:2012-03-15 18:42:43
【问题描述】:

好吧,总而言之,我要做的是禁用基于 ajax 调用的提交按钮,该调用正在检查我的数据库以查看数据是否存在于某个日期。

目前我已经完成了上述所有工作,但是在实际禁用提交按钮方面我遇到了最后的障碍。目前,我的 ajax 调用响应在页面上的 div 中显示为文本,我可以通过更改下面的代码,如果响应与我的代码检查的响应不匹配但无法使其正常工作,则禁用按钮匹配(或不响应)。我想我的问题是我正在检查的内容和来自 ajax 调用的实际响应不同。任何帮助将不胜感激。

我的 ajax 调用页面

<script type="text/javascript">
function showHint(str)
{
if (str.length==0)
  { 
  document.getElementById("txtHint").innerHTML="";
  document.getElementById("txtHint").style.border="0px";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    document.getElementById("txtHint").style.border="1px solid #A5ACB2";
    if (xmlhttp.responseText == 'WARNING!! - PREVIOUS RECORDS FOUND') document.getElementById('FRINSUB').disabled = true;
    else
    document.getElementById('FRINSUB').disabled = false;
}
 }
xmlhttp.open("GET","checkdate.php?q="+str,true);
xmlhttp.send();
}
</script>

我非常基本的 ajax 代码

<?php

$cdrf=trim($_GET["q"]);
list($d, $m, $y) = explode('/', $cdrf);
$mk=mktime(0, 0, 0, $m, $d, $y);
$cdrfq=strftime('%Y-%m-%d',$mk);

$q=mysql_real_escape_string($cdrfq);
$isdate = false;

$con = mysql_connect("server","username","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("jbsrint", $con);
$query = "SELECT * FROM fuelrecords WHERE FR_WE='$q'";
$res = mysql_query($query);
if(mysql_num_rows($res) > 0){
$response = "WARNING!! - PREVIOUS RECORDS FOUND";
}else{
$response = "NO RECORD FOUND";
}
echo $response;
?>

【问题讨论】:

    标签: ajax button submit


    【解决方案1】:

    好的,我想通了。无论出于何种原因,它都会发生(仍然无法找出从哪里来)我在返回的 ajax 代码上得到了一个换行符,所以尽管它只是空格,但 if 语句与我要求它检查的短语不匹配。

    通过使用 $.trim(在 jQuery 'If' statement string comparison not working 中找到),我删除了空白区域,这一切都变得生动起来。

    新代码现在看起来像这样。

    if ($.trim(xmlhttp.responseText) == "WARNING!! - PREVIOUS RECORDS FOUND") document.getElementById('FRINSUB').disabled = true;
    

    【讨论】:

      【解决方案2】:
      document.getElementById('FRINSUB').disabled = 'disabled';
      

      【讨论】:

      • 上述方法很好,但我并没有为实际的禁用部分苦苦挣扎,尽管我猜你的版本更准确。它的 if 语句控制该项目是否被禁用,我认为它不起作用。
      • 检查请求是否有错误。使用 Firebug 或类似的东西来检查 ajax 请求。除非 PHP 抛出未捕获的错误,否则它应该可以工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      相关资源
      最近更新 更多