我正在尝试在表单中输入名称和电话,并根据输入值从mysql获取数据。当我通过点击功能运行查询时,浏览器显示我的php和查询,但不是来自数据库的值,它显示'对象HTMLInputElement'。
我必须在我的脚本中遗漏一些内容,但无法弄清楚它是什么。 有人告诉我,当我提交这个ajax / mysql时为什么没有显示该值。请参阅下面的代码并向您寻求帮助......
HTML和SCRIPT
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
<script language="javascript" type="text/javascript">
function ajaxFunction(){
var ajaxRequest;
try{
ajaxRequest = new XMLHttpRequest();
} catch (e){
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
alert("Your browser broke!");
return false;
}
}
}
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById('ajaxDiv');
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
var age = document.getElementById('lname').value;
var queryString = "?lname=" + lname + "&phone=" + phone ;
ajaxRequest.open("GET", "find.php" + queryString, true);
ajaxRequest.send(null);
}
</script>
<form name='myForm'>
Last Name: <input type='text' id='lname' />
Phone: <input type='text' id='phone' />
<input type='button' onclick='ajaxFunction()' value='Query MySQL' />
</form>
<div id='ajaxDiv'>Your result will display here</div>
</body>
</html>
PHP
$inputedname = $_GET['lname'];
$inputedphone = $_GET['phone'];
$inputedname = mysql_real_escape_string($inputedname);
$inputedphone = mysql_real_escape_string($inputedphone);
$query = "SELECT FirstName, Phone FROM ClientInfo WHERE LastName = '$inputedname' AND Phone = '$inputedphone'";
$qry_result = mysql_query($query) or die(mysql_error());
$display_string = "<table>";
$display_string .= "<tr>";
$display_string .= "<th>Name</th>";
$display_string .= "<th>Phone</th>";
$display_string .= "</tr>";
while($row = mysql_fetch_array($qry_result)){
$display_string .= "<tr>";
$display_string .= "<td>$row[FirstName]</td>";
$display_string .= "<td>$row[Phone]</td>";
$display_string .= "</tr>";
}
echo "Query: " . $query . "<br />";
$display_string .= "</table>";
echo $display_string;
在浏览器中
答案 0 :(得分:1)
那是因为您从未在lname
行中定义变量phone
和var queryString = "?lname=" + lname + "&phone=" + phone ;
。因此,浏览器会根据您的输入元素ID生成变量。在字符串连接中使用DOM元素时,会调用其toString()
并输出[object HTMLInputElement]
。这是IE从早期和其他浏览器复制到IE兼容的功能。这是你不应该使用的功能。
以下代码将解决您的问题。
var lname = document.getElementById('lname').value;
var phone = document.getElementById('phone').value;
var queryString = "?lname=" + lname + "&phone=" + phone ;
ajaxRequest.open("GET", "find.php" + queryString, true);
另外,为了防止SQL注入,您应该使用prepared statements而不是http://php.net/manual/en/function.mysql-real-escape-string.php,这是不推荐使用的