Ajax POST没有发布到当前页面的onclick

时间:2014-01-24 16:48:29

标签: javascript php html ajax

好吧,所以这已经困扰了我很久了......我已经尝试了一切,但我无法让它发挥作用!

所以我想要的是一个充当按钮的链接,一旦你点击它,它会以“{'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>

谢谢!

5 个答案:

答案 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)

http://jsfiddle.net/U54ME/

$(".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>