简单的Ajax表单提交!? (无法理解)

时间:2017-08-07 13:21:33

标签: javascript php jquery ajax forms

我将尝试简单地解释我的代码。基本上我有两个不同的文件:

fun.php
class.fun.php

我想用ajax发布我的表单,所以它不会刷新页面。       在class.fun.php中,每个帖子都有reportForm

<!-- REPORT MODAL -->
    <div class="modal fade report_post_<?php echo $post['id'];?>" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <b><center><div class="modal-header">Report Post</div></center></b>     
            <form class="horiziontal-form" id="reportForm" action="../Pages/fun.php?action=reportPostForm" method="post">                     
            <center><textarea name="report" style="width:80%; height:200px; margin-top:20px; resize:vertical;" placeholder="Please describe your Report!"></textarea></center>
            <input type="hidden" name="addedby" class="form-control col-md-7 col-xs-12" value="<?php echo $myRow['id']; ?>" />
            <input type="hidden" name="image_id" class="form-control col-md-7 col-xs-12" value="<?php echo $post['id']; ?>" />
            <div class="modal-footer"> <input type="submit" name="submit" value="Submit Form" /></div>                                  
            </div>               
            </div>
    </form> 
    </div>
    <!-- END OF REPORT MODAL -->

在形式之后我获得了ajax函数:

     <script> 
   $("#reportForm").submit(function(event){
    event.preventDefault(); //prevent default action 
    var post_url = $(this).attr("action"); //get form action url
    var request_method = $(this).attr("method"); //get form GET/POST method
    var form_data = $(this).serialize(); //Encode form elements for submission

    $.ajax({
        url : post_url,
        type: request_method,
        data : form_data
    }).done(function(response){ //
        $("#server-results").html(response);
    });
});
    </script>       

当我点击按钮submit时,我想将表单数据发送到fun.php

这是我在fun.php

中接收数据的方式
if(isset($_POST['reportPostForm'])){
    $image_id = strip_tags($_POST['image_id']);
    $report = strip_tags($_POST['report']);
    $addedby = strip_tags($_POST['addedby']);

    $fun->reportPost($image_id,$report,$addedby);       
}   

并将它们发送到class.fun.php

中的其他功能

但此时此刻没有任何反应。我一直在徘徊很多 教程,无法理解如何使这项工作。我是新手 JavaScript的。我有工作upvote / downvotes脚本,我只传递post_id并且它有效。

我有upvote的脚本有效:

$("#upvote_<?php echo $post['id'];?>").click(function(){
$.ajax(
  { url: "fun.php?upvote-btn=true?action=select&image_id=<?php echo $post['id'];?>", 
    type: "get",
    success: function(result){
        $('#upvote_<?php echo $post['id'];?>').load(document.URL +  ' #upvote_<?php echo $post['id'];?>');
        $('#downvote_<?php echo $post['id'];?>').load(document.URL +  ' #downvote_<?php echo $post['id'];?>');
        $('#comment_<?php echo $post['id'];?>').load(document.URL +  ' #comment_<?php echo $post['id'];?>');
        $('#share_<?php echo $post['id'];?>').load(document.URL +  ' #share_<?php echo $post['id'];?>');
        $('#report_<?php echo $post['id'];?>').load(document.URL +  ' #report_<?php echo $post['id'];?>');
        $('#report_btn_<?php echo $post['id'];?>').load(document.URL +  ' #report_btn_<?php echo $post['id'];?>');
        document.getElementById("result-box").innerHTML = result;
    }
  });

});

2 个答案:

答案 0 :(得分:0)

$_post['reportPostForm']您正在检查if(isset($_POST['report']),但这不是通过此ajax电话上的帖子发送的。你的公司没有这个inputime,这就是为什么没有发生的事情。试试if(isset($_POST['report'])){ $image_id = strip_tags($_POST['image_id']); $report = strip_tags($_POST['report']); $addedby = strip_tags($_POST['addedby']); $fun->reportPost($image_id,$report,$addedby); echo "Done"; }

改变这个:

<div id='server-results'></div>

同时将<div class="modal-dialog modal-lg"> <div class="modal-content"> <b> <center> <div class="modal-header">Report Post</div> </center> </b> <form class="horiziontal-form" id="reportForm" action="../Pages/fun.php?action=reportPostForm" method="post"> <center> <textarea name="report" style="width:80%; height:200px; margin-top:20px; resize:vertical;" placeholder="Please describe your Report!"></textarea> </center> <input type="hidden" name="addedby" class="form-control col-md-7 col-xs-12" value="<?php echo $myRow['id']; ?>" /> <input type="hidden" name="image_id" class="form-control col-md-7 col-xs-12" value="<?php echo $post['id']; ?>" /> <div class="modal-footer"> <input type="submit" name="submit" value="Submit Form" /> </div> </div> </div> <div id='server-results'></div> </form> </div> 添加到表单中,以便显示结果。

 DECLARE @response varchar(max)  

 set @response=Case when (@data is null) then '-'  
      else STR(@data,25,@roundUp) 
     end  

      RETURN @response

答案 1 :(得分:0)

不清楚什么是不起作用。 该文件是正确的。

只有问题出在fun.php中:

if(isset($_POST['reportPostForm'])){
$image_id = strip_tags($_POST['image_id']);
$report = strip_tags($_POST['report']);
$addedby = strip_tags($_POST['addedby']);

$fun->reportPost($image_id,$report,$addedby);
} 

但是你发送的是$ _POST [&#39;已添加&#39;],$ _POST [&#39; image_id&#39;]和$ _POST [&#39;报告&#39;]。

您正在检查$ _POST [&#39; reportPostForm&#39;]的那个不存在。

尝试针对您传递的三个值中的一个执行if。