0

我有一个index.php页面,其中有两种查询,首先是位置,其次是搜索查询。我在位置查询上使用 ajax

html结构:

<ul class="dropdown">
  <li><a href="?loc=dc">City</a></li>
  <li><a href="?loc=dn">North</a></li>
  <li><a href="?loc=ds">South</a></li>
</ul>
<form action="" method="post">
 <input type="text" name="search" id="search">
 </input value="submit" type="submit"/>
</form>
<div id="content_from_AJAX">
 <ul id="li_start">
 </ul>
</div>

ajax.js代码:

$(document).ready(function(e) {
    function getLoc(param){

        if(window.XMLHttpRequest){
            xmlhttp = new XMLHttpRequest();
        }
        else{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange = function(){
         if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
         document.getElementById("li_start").innerHTML = xmlhttp.responseText;
         }
        }
        xmlhttp.open("GET","getresult.php"+param,false);
        xmlhttp.send();

    }

    //handle anchor clicks
    $("ul#location li a").click(function(){
        var loc = $(this).attr("href");
        getLoc(loc);
            return false;
    });

});

getresult.php代码:

require ('connect_to_mysql.php');
  if(isset($_GET['loc']) && empty($_GET['loc'])===false){
    $loc = mysql_real_escape_string($_GET['loc']);
    $query = "SELECT * FROM TB_name WHERE loc=";
  }
  else{
    $query = "SELECT * FROM TB_name";
  }

$query_run = mysql_query($query);
$count = mysql_num_rows($query_run);

if($count<1){
 echo 'no result found';
}
else{
 while($result == mysql_fetch_assoc($query_run)){
  echo "ALL results";
 }
// Here is what I want to be able o access on index.php
 return $_GET['loc']
}

我希望$_GET可以访问它,index.php以便我可以使用它来过滤上面表格中搜索查询的结果,即:

"SELECT * FROM `TB_name` WHERE `keyword` LIKE '$keyword' AND `loc`='".$_GET['loc']."'"

//我需要在index.php不开启时执行此操作getresult.php

AJAX.js如果用户单击 loc 链接(如果$_POST['search']isset),我还希望在 getresult.php 上发送查询。

请帮助真的需要这个项目,我开始很沮丧X_X ..谢谢你的帮助非常感谢:)

4

3 回答 3

1

改变这个

xmlhttp.open("GET","getresult.php"+param,false);

xmlhttp.open("GET","getresult.php?loc="+param,false);
                                 ^^^^ // forgot ?loc=

然后$_GET["loc"]在您的 getresult.php 页面中使用。

于 2013-03-05T11:10:38.460 回答
0

为什么将函数放在 document.ready() 中?

如果是我,我会这样做

function getLoc(param){
$.get('getresult.php',{loc:param},function(data){
  //Do some stuff with data
});

}
于 2013-03-05T11:15:24.000 回答
0

您的代码需要重新考虑。您有一个带有 href 链接的下拉列表和一个提交信息的表单(如果您想要 ajax 结果,则不应该这样做)。

为什么你的 getresults.php 做一个数据库查询然后返回 GET 变量。这是没有意义的,因为数据库查询现在毫无意义,因为它的结果没有用于任何事情。

我认为您想要的是下拉列表中的 onClick 事件侦听器,然后在每次更改时触发 Ajax 请求,然后 getresults.php 文件执行 MySQL 搜索并返回搜索结果(不是 $_GET['loc']因为 index.php 已经知道这个值)。

此外,使用 mysqli* 或 PDO 进行数据库查询,现在不推荐使用 mysql* 函数集并且容易发生 sql 注入。

于 2013-03-05T11:13:05.410 回答