我正在尝试发布一些数据,但我没有实现我需要的东西。
无论我点击什么list-item
,它都会发布最高list-item
的值。
这是jquery函数:
$(".list-item-wrap a").click(function(){
$.post("display2.php", {
msg_id: $(".list-item-wrap a .list-item").find('input').val()},
function(data) {
$("#list").load("display2.php", {
msg_id: $(".list-item-wrap a .list-item").find('input').val()
});
//window.location.replace("display2.php");
})
})
这是实际的html / php数据:
<?php
$query = "SELECT * from workflow WHERE name = '$username' ORDER BY msg_id DESC";
$result = mysql_query($query) or die("ERROR: $query.".mysql_error());
while ($row = mysql_fetch_object($result)) {
echo "<div class=list-item-wrap>";
echo "<a href='#'><div class=list-item><input class=msgid type=hidden value="
.$row->msg_id.">";
echo "<b><h1>".$row->subject."</h1></b>".substr($row->message, 0, 200)
."...<br><b>".$row->sender."</b>";
echo "</div></a></div>";
}
?>
我哪里错了?
答案 0 :(得分:2)
当你在一组元素上调用val()
时,它只会返回第一个元素的值。您只需要在所需的元素上调用val()
。
请尝试使用此功能,以获取您点击的项目:
$(".list-item input", this).val()
在这种情况下,this
是您想要的.list-item-wrap a
,因此您需要获得input
之后的信息。
或者,如果您要发布所有项目,请使用:
$('input', '.list-item-wrap a .list-item').serialize()
答案 1 :(得分:1)
你需要在锚点击上使用preventDefault():
$(".list-item-wrap a").click(function(e){
e.preventDefault();
$.post("display2.php", {msg_id: $(".list-item-wrap a .list-item").find('input').val()},
function(data){
$("#list").load("display2.php", {msg_id: $(".list-item-wrap a .list-item").find('input').val()});
//window.location.replace("display2.php");
})
})
答案 2 :(得分:0)
在功能结束时使用return false
。像:
$(".list-item-wrap a").click(function(){
$.post("display2.php", {msg_id: $(".list-item-wrap a .list-item").find('input').val()},
function(data){
$("#list").load("display2.php", {msg_id: $(".list-item-wrap a .list-item").find('input').val()});
//window.location.replace("display2.php");
})
return false;
})
答案 3 :(得分:0)
对不起我误解了这个:
$(".list-item-wrap a").click(function(){
$.post("display2.php", {msg_id: $(this).find('input').val()},
function(data){
$("#list").load("display2.php", {msg_id: $(".list-item-wrap a .list-item").find('input').val()});
//window.location.replace("display2.php");
})
})
答案 4 :(得分:0)
首先,您需要找到所需输入元素的值。
所以用
msg_id: $("input",this).val()
您还应该将回调方法更改为仅显示数据而不是执行新的ajax调用。
function(data) {
$("#list").html(data);
}