好吧,所以这已经困扰了我很久了......我已经尝试了一切,但我无法让它发挥作用!
所以我想要的是一个充当按钮的链接,一旦你点击它,它会以“{'id':id}”形式发布按钮的ID号“
edit-homepage.php:
<script>
$(function() { // document ready
$('a.inactive').on('click', function(event) {
event.preventDefault(); // instad of return false
var id = $(this).data('id');
// use $.post shorthand instead of $.ajax
$.post('edit-homepage.php', {id: id}, function(response) {
// after you get response from server
editSlide(id);
});
});
});
</script>
a href按钮是使用PHP创建的,我希望它调用ajax函数postID(id),它将发布id,以便稍后我可以使用发布的id通过PHP填充表单。
edit-homepage.php:
echo '<li><a class="inactive" id="slide-'.$info["id"].
'" onClick="postID('.$info["id"].'); editSlide('.$info["id"].'); return false;">'
.'<img src="../images/'.$info["img"].'" width="175"/><p>Edit Slide '
. $info["id"] .'</p></a></li>';
目前,当我点击该链接时,它会打开警报,但它是EMPTY或Undefined。例如,如果单击的链接的ID为1,则应显示“ID:1”。
修改-homepage.php:
<script>
function editSlide($id) {
<?PHP
if (isset ($_POST['id'])) {
echo "alert('success!2');";
}$id = !empty($_POST['id']) ? $_POST['id'] : '';
$data = mysql_query("SELECT * FROM slider WHERE id='$id'") or die(mysql_error());
$info = mysql_fetch_array( $data );?>
document.getElementById("edit-slide-id").innerHTML="Edit Slide #"+$id;
document.getElementById("edit-form").style.display = "block";
document.getElementById("short-title").value="<?PHP echo $info['s_title']; ?>";
}
</script>
谢谢!
答案 0 :(得分:1)
使用jquery,您不需要使用属性来附加事件,例如:
$(function() { // document ready
$('a.inactive').on('click', function(event) {
event.preventDefault(); // instad of return false
var id = $(this).data('id');
// use $.post shorthand instead of $.ajax
$.post('edit-homepage.php', {id: id}, function(response) {
alert('ID:' + response);
// after you get response from server
editSlide(id);
});
});
});
从服务器端开始,尝试替换原始
<?PHP echo $_POST['id']; ?>
使用
<?php echo !empty($_POST['id']) ? $_POST['id'] : '' ?>
您可能会注意到Undefined index id
,如果没有post
数据,会导致javascript中断。
<强>更新强>
edit-homepage.php shold会分开这样的东西:
if(!empty($_POST)) {
// here you process your post data and return
// only wenever you want to pass to script
// not all the html
} else {
// here you output html and scripts, but don't do request processing
}
您应该始终记住,您的HTML呈现必须始终与您的逻辑分开。最好将views
放在与逻辑不同的文件中,虽然它不是必需的,但它更容易调试和维护。
答案 1 :(得分:0)
您不能包含应该在ajax调用之后运行的PHP代码。将仅运行PHP代码以生成页面。您希望包含在alert中的任何内容都应该在ajax响应中提供,在您的情况下是数据变量。
答案 2 :(得分:0)
您需要使用alert('ID: ' + id)
。
脚本的$_POST['id']
部分不会对AJAX
请求做出反应。当脚本输出到浏览器时(即首次加载页面时),无论$_POST['id']
值是什么。
如果您查看来源,您会看到这一点。
答案 3 :(得分:0)
alert ("ID:"+data);
然后只有你会得到回复
或
alert("ID"+id);
这将提醒id传递给函数
答案 4 :(得分:0)
$(".checkthisclass").click(function() {
$.ajax({
type: "POST",
url: "edit-homepage.php",
data: { 'id' : $(this).attr("slideid"); },
success: function(data) {
alert(data);
}
});
}
});
-
<ul>
<li><a class="inactive checkthisclass" id="slide-5" slideid = "5" ><img src="http://blog.entelo.com/wp-content/uploads/2013/04/stackoverflow-logo.png" width="175"/><p>Edit Slide 5</p></a></li>
</ul>