Как передать данные в функцию AJAX с JSON? - PullRequest
0 голосов
/ 21 июня 2019

Мне нужно получить идентификатор из URL, значение комментария из текстового поля, сохранить его в базе данных и показать на странице с помощью 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 ]

2 голосов
/ 21 июня 2019

Исходя из ваших требований, вам нужно будет выполнить соответствующую обработку формы на стороне клиента, чтобы получить такие переменные, как id и comment.Вы можете использовать строго типизированное связывание модели, чтобы получить значения формы и обработать их при отправке, или вы можете использовать методы JavaScript для обработки переменных формы.Чтобы извлечь id из URL, вы можете использовать Regular Expression или другие методы анализа строк JavaScript.Я приведу простой пример получения id из URL и comment из текстового поля с использованием JavaScript:

Ваш элемент управления вводом будет выглядеть так:

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

InЧтобы достичь желаемой функциональности, используя 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>

И вы можете получить свои значения в вашем контроллере, напримерэто:

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);
}
0 голосов
/ 24 июня 2019

Мое решение выглядит так:

Контроллер:

       [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);

    }

View

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),

спасибо всем за руководство к решению

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...