【问题标题】:Ajax doesnt hit controller actionAjax 没有命中控制器动作
【发布时间】:2018-09-13 07:06:20
【问题描述】:

lam 试图将答复保存到数据库 这是我的html表单,

<div id="replyform" class="card my-4 d-none">
    <h5 class="card-header">Cevap Yaz:</h5>
    <div class="card-body">
        <form>
            <div class="form-group">
                <textarea id="replytext" name="replytext" typeof="text" class="form-control" rows="3"></textarea>
            </div>
            <button type="submit" id="sendreply" name="sendreply" class="btn btn-primary">Cevap Yaz</button>
        </form>
    </div>
</div>

这是我的家庭控制器操作代码

 public JsonResult ReplyComment(string replycomment, int articleid,int commentid)
    {
        var UserId = Session["UserId"];
        if (replycomment == null)
        {
            return Json(true, JsonRequestBehavior.AllowGet);
        }
        db.ReplyComments.Add(new ReplyComment
        { UserId = Convert.ToInt32(UserId), ArticleId = articleid, CommentId=commentid, Paragraph = replycomment,  Date = DateTime.Now });
        db.SaveChanges();
        return Json(false, JsonRequestBehavior.AllowGet);
    }

我的 ajax 代码在这里

<script type="text/javascript">

 $(document).ready(function () {

    $("#sendreply").click(function () {

        var r_comment = $("#replytext").val();
        var r_commentid = $(".astar").val();

        $.ajax({
            cache: false,
            url: '@Url.Action("ReplyComment","Home")',
            contentType: "application/json; charset=utf-8",
            data: { replycomment: r_comment, articleid:@Model.ArticleId, commentid: r_commentid },
            type: 'POST',
            dataType: 'json',
            success: function (data) {
            alert("İşlemOkey");
            }
        });
});
})

我无法使用此代码调用回复评论操作

【问题讨论】:

  • 您需要一种方法来防止 submit 按钮的默认行为。例如,您可以使用 preventDefault 来做到这一点...您可以将这一行 $("#sendreply").click(function () { 替换为这一行 @ 987654327@
  • 我是新手,请你写完整的ajax代码
  • 只是一个替换.....用新的替换你当前的行,然后再试一次!
  • İt did not work 问题是一样的
  • 我正在使用不同的表单正常评论和回复评论当用户单击回答按钮时,如果您认为我使用相同的表单进行两个操作,则会打开一个新表单

标签: html ajax asp.net-mvc view controller


【解决方案1】:

我已经测试了这段代码,它会为你工作。由于我通过 ajax 发布,我已经从 html 的正文中删除了表单标签。

对于后端(php),我只是通过发送变量 r_comment 和 r_commentid 来测试它,它工作正常。它现在应该可以与您的后端代码一起使用。如果它适合你,请给我大喊............

<html>
<head>
<body>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script>

         $(document).ready(function(){

          $("#sendreply").click(function () {



       var r_comment = $("#replytext").val();
       var r_commentid = $(".astar").val();
       var articleid = '20';
/* lets test with data

        var r_comment ='my comment';
        var r_commentid = '20';

        */
        $('#loader').fadeIn(400).html('Data is being processed');


         // assuming that you want query result by posting a variable
         var datasend = "r_comment="+ r_comment  + "&r_commentid=" + r_commentid  + "&articleid=" + articleid;

         $.ajax({

         type:'POST',
         url:'smoke1.php',
         data:datasend,
         crossDomain: true,
         cache:false,
         success:function(msg){

//display image loader or text to alert the use that content is being processed

         $('#loader').hide();

// and display result
alert("İşlemOkey");

         $('#result').fadeIn('slow').prepend(msg);




         }

         });

      })

         });


    </script>


<div id="replyform" class="card my-4 d-none">
    <h5 class="card-header">Cevap Yaz:</h5>
    <div class="card-body">



            <div class="form-group">
               replytext: <textarea id="replytext" name="replytext" class="form-control" rows="3"></textarea>
            </div>

<div class="form-group">
                astar: <input type="text" class="astar">
            </div>



<div id="loader"></div>
<div id="result"></div>
<br>


            <button type="submit" id="sendreply" name="sendreply" class="btn btn-primary">Cevap Yaz</button>

    </div>
</div>


</body></html>

我在 php 中的测试后端(用你的后端代码试试)

smoke1.php

<?php
echo "ok";
echo $_POST['r_comment'];
echo $_POST['r_commentid'];
echo $_POST['articleid'];
?>

【讨论】:

  • 我不懂 php,但在我的页面上看起来一样。没什么不同
  • php 部分与您无关。它只是为了让您看到 ajax 可以根据您的问题的标题在按下按钮时提交数据。将 ajax url 更改为后端的实际 url。它会起作用的。我删除了表单标签
    以便 ajax 可以工作
  • 我的代码会为你工作。它和你的不一样。你测试过还是只是抱怨
  • 我解决了这个问题,但是现在当我尝试回复评论时,Commentid 每次都使用第一个评论 id 如果我想回复另一条评论不会更改评论 id 你知道我该如何解决那个伙伴吗?
  • 现在您的问题已根据您的问题标题得到解决(Ajax 不会触发控制器操作)。您可以将问题标记为已解决。您可以打开另一个帖子并创建一个标题,为什么 commentid 采用第一个评论 ID。好的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 2019-11-13
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多