PHP和javascript在Internet Explorer和Google Chrome上正常工作,但在三星Galaxy Android上无法正常工作
我有一个基于php的web应用程序,当用户输入一个值时,它会从mysql数据库中提取细节并显示出来,而不会刷新页面。这显然是通过javascript实现的 这在internet explorer、chrome等移动设备(如黑莓和平板电脑)上100%正常工作。一旦用户输入数据,格式就会混乱。请参见下面的屏幕截图 Internet explorer,表结构保持不变: 移动设备(Galaxy Tablet),表结构已更改: 涉及的2页代码如下所示。前端是一个php页面,它使用javascript从mysql获取和显示数据 php页面:PHP和javascript在Internet Explorer和Google Chrome上正常工作,但在三星Galaxy Android上无法正常工作,php,javascript,android,format,Php,Javascript,Android,Format,我有一个基于php的web应用程序,当用户输入一个值时,它会从mysql数据库中提取细节并显示出来,而不会刷新页面。这显然是通过javascript实现的 这在internet explorer、chrome等移动设备(如黑莓和平板电脑)上100%正常工作。一旦用户输入数据,格式就会混乱。请参见下面的屏幕截图 Internet explorer,表结构保持不变: 移动设备(Galaxy Tablet),表结构已更改: 涉及的2页代码如下所示。前端是一个php页面,它使用javascript
<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>
测试
函数showUser(userNumber,str)
{
document.getElementById(“r”+(userNumber)).style.display=“block”;
如果(str==“”)
{
document.getElementById(“txtHint1”).innerHTML=“”;
返回;
}
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“txtHint1”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”、“getdata1.php?q=“+str,true”);
xmlhttp.send();
}
这里将显示mysql数据
获取mysql数据的getdata1.php页面:
<?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技能是不存在的
谢谢大家,问题出在JavaScript的第一行:
document.getElementById("r"+(userNumber)).style.display="block";
您正在将第一个表格行的显示样式设置为block
。我认为在你的情况下没有理由这么做,所以只要去掉这一行,你的HTML就可以在所有浏览器中很好地工作,包括三星Galaxy标签(我在实际的平板电脑上测试过)
另一方面,FireFox中也出现了单元格移动的效果(现在不再是了)。请显示生成的HTML(右键单击->查看源代码)-看起来你的某个地方有一个未关闭的标记,尽管它没有向我跳出来。另外,请选择一个doctype并正确地坚持它。所有属性值都应该用引号括起来<代码>应该避免使用标签-改用CSS。感谢@DaveRandom,我已经更新了这个问题。使用标准html 1.0 strict或html5,并使用验证程序进行验证。我仍然找不到我确定存在的未关闭标签,很难读取您的html。您需要做的第一件事是在所有属性值周围添加引号-问题可能是由
中的空的、未加引号的值=
属性引起的,例如值=>
。您无疑给HTML解析器带来了一项困难的工作,我并不奇怪您会出现错误。添加一个
作为文档的第一行,并遍历并添加引号,这样(例如,
就变成了
。@DaveRandom,再次感谢您的帮助和时间。我已经更新了问题,以显示代码的简化版本,其中只包含我正在寻找的功能,结果相同。希望我已经正确格式化了代码。谢谢,莱安汉克斯·亚历克斯,100%。感谢大家为我这样的白痴付出的时间和努力:-)