如何使用json将数据传递给ajax函数?

时间:2019-06-21 11:01:15

标签: c# jquery json ajax asp.net-mvc

我需要从URL获取ID,从文本框中获取注释值,将其保存到数据库中并在Ajax页面上显示。 我不确定应该如何在控制器和ajax函数中看起来正确的语法。

控制器

 [HttpPost]
    public JsonResult AddComment(int id, string comment)
    {
        if (ModelState.IsValid)
        {
            return Json(true); // what should be here 
        }
        return Json(true);
    }

Ajax

    $('#submit').click(function () {
        $.ajax({
            url: '/Form/AddComment',
            method: 'POST',
            data: {
                id: 4,               //how to get id from url?
                comment: 'test'      //how to get textbox value?
            },
            success: function (data) {
                console.log(data)
            },
            error: function (a, b, c) {
                console.log('err')
            }
        })
    });

这只是告诉我它有效,但是我不知道如何前进

2 个答案:

答案 0 :(得分:2)

根据您的要求,您将必须在客户端进行适当的表单处理,以获取idcomment之类的变量。您可以使用强类型模型绑定来获取表单值并在提交时对其进行处理,也可以使用JavaScript技术来处理表单变量。要从网址中提取id,可以使用Regular Expression或其他JavaScript字符串解析技术。我给你一个简单的例子,使用JavaScript从URL中获取id,从文本框中获取comment

您的输入控件如下所示:

<input type="text" id="commentBox" name="Comment" class="form-control" />

为了使用AJAX将表单变量发布到控制器中来实现所需的功能,请参考以下代码段:

AJAX:

<script type="text/javascript">

var url = 'http://www.example.com/4'; //Example URL string
var yourid = url.substring(url.lastIndexOf('/') + 1);
var yourcomment= document.getElementById('commentBox').value;

var json = {
            id: yourid, //4
            comment: yourcomment 
           };

$('#submit').click(function (){
    $.ajax({
        url: '@Url.Action("AddComment", "Form")',
        type: "POST",
        dataType: "json",
        data: { "json": JSON.stringify(json)},
        success: function (data) {
         console.log(data)
         },
         error: function (data) {
         console.log('err')
         },
    });
};
</script>

您可以像这样在Controller中获取值:

using System.Web.Script.Serialization;

[HttpPost]
public JsonResult AddComment(string json)
{
    if (ModelState.IsValid)
    {
        var serializer = new JavaScriptSerializer();
        dynamic jsondata = serializer.Deserialize(json, typeof(object));

        //Get your variables here from AJAX call
        string id= jsondata["id"];
        string comment=jsondata["comment"];

        // Do something here with your variables. 
    }
    return Json(true);
}

答案 1 :(得分:0)

我的解决方案如下:

控制器:

       [HttpPost]
    public JsonResult AddComment(int id_usr,string comment)
    {
        if (ModelState.IsValid)
        {
            Comments kom = new Comments();
            kom.DateComment = DateTime.Now;
            kom.Id_usr = id_usr;
            kom.Comment = comment;
            db.Comments.Add(kom);
            db.SaveChanges();
            return Json(kom);
        }
        return Json(null);

    }

查看

var url = window.location.pathname;
var idurl = url.substring(url.lastIndexOf('/') + 1);
$('#submit').click(function () {
        console.log('click')
        $.ajax({
            url: '/form/AddComment',
            method: 'POST',
            data: {
                comment: $("#Comments_Comment").val(),
                id_usr: idurl,
            },
            success: function (data) {
                console.log(data),

谢谢大家指导我解决问题