我能够将服务器名称传递给成功运行查询的PHP。在html文件中,我希望评级选项根据PHP文件返回的值进行更改。在我的文件中,我将其设置为D,但我需要更改它以重新选择从PHP返回的内容。
server.html
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script type="text/javascript" >
$(document).ready(function(){
var id = $('#existingserver').val();
$('#assetCenter').click(function(){
var id = $('#textfield').val();
$.get('servertest.php',{q:id}, function(htmlData){
$('#txtHint').html(htmlData);
var rating = $(htmlData).find("td[data-col=rating]").text();
alert(rating);
});
});
});
</script>
</head>
<body>
<form>
<label>Existing Server</label><input type="text" name="existingserver" id="textfield" maxlength="15"/>
<input type="checkbox" id="assetCenter" >Select to Pull Asset Center Data<br>
<br />
<br />
Rating
<select name="rating" id="rating" >
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
</form>
<br />
<div id="txtHint"><b>Server info will be listed here.</b></div>
</body>
</html>
servertest.php
<?php
$q=$_GET["q"];
$con = mysql_connect('localhost', 'assignip', 'assignip');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("ipreservation", $con);
$sql="SELECT * FROM acdata WHERE servername = '".$q."'";
$result = mysql_query($sql);
echo "<table border='1'>
<tr>
<th>Servername</th>
<th>Contact</th>
<th>Classification</th>
<th>Rating</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['servername'] . "</td>";
echo "<td>" . $row['contact'] . "</td>";
echo "<td>" . $row['classification'] . "</td>";
echo "<td>" . $row['rating'] . "</td>";
echo "</tr>";
echo "<td data-col='rating'>" . $row['rating'] . "</td>";
}
echo "</table>";
mysql_close($con);
?>
数据库字段:服务器名称,联系人,分类,评级 数据:Server1,Ray,Production,A
答案 0 :(得分:1)
在您的PHP代码中,更改输出以显示您想要显示的值,而不显示任何html标记。
接下来在你的html代码中,更改$(document).ready回调,以便&#39; D&#39;被调用的响应文本替换(这将是PHP将返回的内容)。
答案 1 :(得分:1)
简短的回答是使用JQuery选择器来获得评级:
// get the text of the 4th td
var rating = $(htmlData).find("td").eq(3).text();
$("#rating").val(rating);
但是,您可能会注意到这种方法有点脆弱(又称紧密耦合) - 如果UI中的某些内容发生变化,比如重新排序列,则上述逻辑将会中断。
我建议将数据从服务器返回为JSON,然后应用客户端模板来获取HTML表。至少,给列添加如下名称:
echo "<td data-col='rating'>" . $row['rating'] . "</td>";
然后您可以通过引用名称在客户端进行选择:
var rating = $(htmlData).find("td[data-col=rating]").text();