【发布时间】:2014-05-09 08:33:05
【问题描述】:
我的网站上有一个 ajax 搜索,它用搜索结果填充 HTML 文本框。这很好用。但我想做的是在文本框中显示文章的文本,但将文章的 id 传递给 $_POST 以保存到数据库中。
我使用的JS是:
<script type="text/javascript">
$(function(){
$(".search").keyup(function()
{
var searchid = $(this).val();
var dataString = 'search='+ searchid;
if(searchid!='')
{
$.ajax({
type: "POST",
url: "search.php",
data: dataString,
cache: false,
success: function(html)
{
$("#result").html(html).show();
}
});
}return false;
});
jQuery("#result").live("click",function(e){
var $clicked = $(e.target);
var $name = $clicked.find('.name').html();
var decoded = $("<div/>").html($name).text();
$('#searchid').val(decoded);
});
jQuery(document).live("click", function(e) {
var $clicked = $(e.target);
if (! $clicked.hasClass("search")){
jQuery("#result").fadeOut();
}
});
$('#searchid').click(function(){
jQuery("#result").fadeIn();
});
});
</script>
我的 search.php 文件如下所示:
<?php
if($_POST)
{
$q = $_POST['search'];
$sql_res = mysql_query("SELECT id,title,author,DATE_FORMAT(added,'%b %e, %Y') AS added FROM news WHERE title LIKE '%$q%' ORDER BY id LIMIT 5");
while($row=mysql_fetch_array($sql_res))
{
$title = $row['title'];
$author = $row['author'];
$added = $row['added'];
?>
<div class="show">
<span class="name"><?php echo $title; ?></span> <br/><span class="showdate">Addded: <?php echo $added; ?></span>
</div>
<?php
}
}
?>
最后 HTML 看起来像这样:
<div class="block">
<label>master article</label>
<input type="text" name="MasterID" maxlength="16" id="searchid" class="search" placeholder="Search for the master article">
</div>
<div id="result"></div>
问题是文本框显示标题,这很好,但我想发布 id。我感觉如此接近,并认为我也许可以使用隐藏的输入类型,但不确定如何填充它。
提前感谢您的帮助!
【问题讨论】:
-
你想什么时候发什么id?
-
在while循环中为id创建一个新对象,如下所示 $id = $row['id'];在您看来,您可以回显 () 并存储在隐藏字段中。你被困在哪里了?
-
啊,是的,我需要在 search.php 中附加我的 PHP 来设置变量 $articleid = $row['id'];因此发送 $articleid
-
请stop using
mysql_*functions。它们不再被维护并且是officially deprecated。改为了解prepared statements,并使用PDO。
标签: php jquery ajax post textbox