2011-09-26 38 views
0

我有一个网站,人们在这里搜索音乐,搜索时会附上它们的id。我正在尝试制作饲料,迄今为止它已经工作。但是,Feed中包含一个JavaScript函数,用于在搜索时点击链接,填充搜索字段并完成搜索。问题是我期待每个链接都是特定的搜索,但最终发生的是它将php变量的值设置为数组中的最后一个搜索。我现在要做的就是设置一个计数器的php搜索变量,稍后在javascript中调用。我知道这听起来很混乱/不太清楚,但我正在努力。也许代码会有所帮助。用javascript计算返回一个php元素

$sql_userSearch = mysql_query("SELECT id, searchstring, timecount, userSearch FROM trending WHERE userSearch != 0 ORDER BY timecount DESC LIMIT 50"); 


    $counter = 1; 
    while($row = mysql_fetch_array($sql_userSearch)){ 

$search_id = $row["id"]; 
$searcher_id = $row["userSearch"]; 
$the_search[$counter] = $row["searchstring"]; 
$search_date = $row["timecount"]; 
$convertedTime = ($myObject -> convert_datetime($search_date)); 
$whenSearch = ($myObject -> makeAgo($convertedTime)); 
$search_date = $row["timecount"]; 


$searchDisplayList .= 
'<table style="border:#999 1px solid; border-top:none;" background="img/searchBG.png" cellpadding="5" width="100%"> 
<tr> 
    <td width="10%" valign="top"><img src="https://graph.facebook.com/'. $searcher_id . '/picture" width="35" height="35"></td> 
    <td width="90%" valign="top" style="line-height:1.5em;"> 
    <span class="liteGreyColor textsize9"><strong>' . $searcher_id . '</strong></a> searched for </span> 
    <a href="#" onClick="swapSearch()">' . $the_search[$counter] . '</a></br> ' . $whenSearch . ' 
    </td> 
    </tr></table>'; 


$counter++; 
} 

然后稍后,这是我用来返回链接的JavaScript。

 <script type="text/javascript"> 
    function swapSearch(){ 
     document.getElementById('s').value = "<?= $the_search[$counter] ?>"; 
     $('#searchForm').submit(); 
    } 
    </script> 

编辑:

我刚刚结束了使用一些JavaScript是抓住了链接的文本和填充搜索表单。比我想要做的更容易。

<script type="text/javascript"> 
    $("a.friendSearchLink").live("click",function(a) {  
a.preventDefault();       
var searchTerm = $(this).text(); 
document.getElementById('s').value = searchTerm; 
$("#searchForm").submit();     
    }); 
    </script> 
+0

JavaScript的“链接”文本正确显示,但是,当您单击该链接时,它不会使用正确的文本填充搜索。 – Michael

回答

1

PHP是预处理的,只能在页面发送到客户端之前回显一个值。为了做你想做的事情,你必须发送一个ajax调用到包含你正在查找的信息的页面,否则你的输出将是完全静态的。

+0

好的,所以我说json编码输出并用ajax抓住它。我怎样才能让每个链接与数组中相应的元素相匹配? – Michael

+0

json数组是JavaScript本地的,您可以使用jQuery的'$ .getJSON'函数来抓取对象,然后遍历该对象。 –

0

您可以将$the_search中的所有搜索存储到JS数组中,然后将$counter传递给swapSearch('.$counter.')。那么无论搜索是什么,你都可以在js中查找。

我唯一的其他问题是你提交搜索表单作为一个职位?因为如果您将其更改为从$ _GET读取,则只需使用链接即可通过设置href="?q=$the_search[$counter]"来运行搜索。其他选项是在URL中传递搜索标识,并使用php加载搜索结果/关键字。