我有一个Ajax PHP MySQL实时搜索,基本上从MySQL数据库中提取食物并将它们显示在下拉列表中,当用户输入搜索词时,每行一个项目,就像在谷歌搜索一样。Ajax PHP Live Search - 需要第二步
我需要的是一种允许用户点击特定结果项目的方法,并且为了打开它,在被点击的项目下方,具有几个单选按钮的框中列出了具有各种量的特定食物的选项项目。用户然后可以选择金额选项并点击提交以保存其选择。
我非常了解PHP和MySQL和HTML,但JS是一个挑战,所以如果能在您的答案中详细说明,我将不胜感激。
下面是一些代码段与我有什么在这一点上:
的HTML搜索表单:
<input type="text" size="30" name="food_name" id="q" value="" onkeyup="sendRequest(this.value);" autocomplete="off"/>
同一页面瓦特/搜索表单上的AJAX代码:
function createRequestObject() { var req; if(window.XMLHttpRequest){ // Firefox, Safari, Opera... req = new XMLHttpRequest(); } else if(window.ActiveXObject) { // Internet Explorer 5+ req = new ActiveXObject("Microsoft.XMLHTTP"); } else { alert('Problem creating the XMLHttpRequest object'); } return req; } // Make the XMLHttpRequest object var http = createRequestObject(); function sendRequest(q) { // Open PHP script for requests http.open('get', 'checkfoods.php?q='+q); http.onreadystatechange = handleResponse; http.send(null); } function handleResponse() { if(http.readyState == 4 && http.status == 200){ // Text returned FROM the PHP script var response = http.responseText; if(response) { // UPDATE ajaxTest content document.getElementById("searchResults").innerHTML = response; } } }
该PHP脚本查看名为FOOD_DES的表到MySQL中并带来回结果填充食品的下拉列表:
include 'my-food-dtabase.php'; $searchQry = isset($_GET['q']) ? mysql_real_escape_string($_GET['q']) : false; if ($searchQry) { $searchString = $_GET['q']; $sql = mysql_query("SELECT NDB_No, FdGrp_Cd, Long_Desc FROM FOOD_DES WHERE Long_Desc LIKE '%".$_GET['q']."%' ORDER BY Long_Desc ASC"); if($searchString != NULL) { while($row = mysql_fetch_assoc($sql)) { echo "<span id=foodlist><a href=calorie-counter-serving.php?NDB_No=".$row['NDB_No'].">".$row['Long_Desc']."</a><br /></span>"; } } if(mysql_num_rows($sql) == 0) { echo "<span class=medium_white>Food item not found. Try a different name or keyword.</span>"; } }
http://www.cs.arizona.edu/~mccann/indent_c.html#One – 2011-12-18 00:03:21
确保您可以看到AJAX请求/响应这方面的工作的时候 - 它帮助极大。 Chrome本身就是这样,或者Firefox + Firebug很好。 – halfer 2012-01-02 18:41:43