【问题标题】:PHP and javascript working correctly on Internet Explorer and Google Chrome but not on Samsung Galaxy AndroidPHP 和 javascript 在 Internet Explorer 和 Google Chrome 上正常工作,但在三星 Galaxy Android 上不能正常工作
【发布时间】:2012-03-09 09:42:32
【问题描述】:

我有一个基于 php 的 web 应用程序,当用户输入一个值时,它会从 mysql 数据库中提取详细信息并在不刷新页面的情况下显示它。这显然是用 javascript 完成的。

这在 Internet Explorer、chrome 等移动设备(如黑莓和平板电脑)上 100% 正确运行,一旦用户输入数据,格式就会被弄乱。请参阅下面的屏幕截图。

Internet explorer,表结构保持完整:

移动设备(Galaxy Tablet),表结构发生变化:

example can be viewed here

所涉及的 2 个页面的代码如下所示。前端是一个php页面,它使用javascript从mysql中获取和显示数据。

php页面:

<html>
<head>
<title>test</title>
<script type="text/javascript"> 
  function showUser(userNumber, str) 
  { 
  document.getElementById("r"+(userNumber)).style.display="block";  
    if (str=="") 
    { 
      document.getElementById("txtHint1").innerHTML=""; 
      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("txtHint1").innerHTML=xmlhttp.responseText; 
      } 
    } 
    xmlhttp.open("GET","getdata1.php?q="+str,true); 
    xmlhttp.send(); 
  } 
</script> 
</head>
<body>

<form name="orderform" id="orderform" action="newsale.php" method="post">

<div align="left" id="txtHint1">mysql data will be shown here</div>
<br>
<table border="1">

    <tr id="r1">  
        <td>
            <input size="8"  type="text" id="sku1" name="sku1" onchange="showUser(1, this.value)" >
        </td>
        <td>
            <input  type="text" id="qty1" name="qty1" size="3">
        </td>
    </tr>
    <tr id="r2">  
        <td>
            <input size="8"  type="text" id="sku2" name="sku2" onchange="showUser(1, this.value)" >
        </td>
        <td>
            <input  type="text" id="qty2" name="qty2" size="3" >
        </td>
    </tr>
</table>

</form>
</body>
</html>

getdata1.php页面获取mysql数据:

<?php
 $q=$_GET["q"];

$con = mysql_connect('localhost', 'user', 'pass');
 if (!$con)
   {
   die('Could not connect: ' . mysql_error());
   }

mysql_select_db("database", $con);

$sql="SELECT Category, Description,SellingUnits,Grouping,CasesPerPallet,ShrinksPerPallet FROM skudata WHERE packcode = '".$q."'";

$result = mysql_query($sql);


while($row = mysql_fetch_array($result))
   {
   echo "<font color=blue size=2>Description:</font> <font color=red size=2>".$row['Description']."</font>, ";
   }

mysql_close($con);
 ?> 

再次感谢大家的帮助,不胜感激。

或者,有没有人有另一个 javascript 可以让我显示来自 mysql 的数据?抱歉,但我的 JavaScript 技能不存在。

感谢和问候,

【问题讨论】:

  • 请显示生成的 HTML(右键单击 -> 查看源代码) - 看起来您在某处有一个未关闭的标签,尽管它并没有跳出来。另外,请正确选择一个文档类型并坚持下去。 所有属性值应该用引号括起来。应避免使用&lt;font&gt; 标签 - 改用 CSS。
  • 谢谢@DaveRandom,我已经更新了问题。
  • 使用标准 html 1.0 strict 或 html5 并使用验证器对其进行验证validator.w3.org
  • 我仍然找不到那个我确定存在的未闭合标签,很难阅读您的 HTML。您需要做的第一件事是在所有属性值周围添加引号 - 问题可能是由 &lt;input&gt;s 中的空的、未引用的 value= 属性引起的,例如 value= &gt;。您肯定给 HTML 解析器带来了一项艰巨的工作,我对您遇到错误并不感到惊讶。添加&lt;!DOCTYPE html&gt; 作为文档的第一行,然后遍历并添加引号,因此(例如)&lt;font color=grey&gt; 变为&lt;font color="grey"&gt;
  • 嗨@DaveRandom,再次感谢您的帮助和您的时间。我已经更新了问题以显示代码的简化版本,只有我正在寻找的功能,相同的结果。希望我已经正确格式化了代码。谢谢,瑞安

标签: php javascript android format


【解决方案1】:

问题出在 JavaScript 的第一行:

document.getElementById("r"+(userNumber)).style.display="block";

您将第一个表格行的显示样式设置为block。我认为在您的情况下没有理由这样做,因此只需删除该行,您的 HTML 就可以在所有浏览器中正常工作,包括三星 Galaxy Tab(我在实际平板电脑上进行了测试)。

附带说明,单元格移动效果也发生在 FireFox 中(现在不再发生)。

【讨论】:

  • 感谢亚历克斯,100%。感谢大家为像我这样的白痴付出的时间和精力:-)
猜你喜欢
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 2016-09-15
相关资源
最近更新 更多