【问题标题】:How can I save data in json format through jquery ajax如何通过 jquery ajax 以 json 格式保存数据
【发布时间】:2021-02-13 00:06:44
【问题描述】:

空数据是通过jquery从html页面传输的,请帮助我 这是我的 api 代码 asp.net 核心,它工作正常

[HttpPost]
public async Task<ActionResult<LeaveSubmit>> Submitdata()
{
    try
    {
        LeaveSubmit lobj = new LeaveSubmit();
        //  string myobj = Convert.ToString(lobj);
        JObject jsonObject = JObject.FromObject(lobj);
        if (jsonObject == null)
        {
            return BadRequest();
        }
        else
        {
            var json = System.IO.File.ReadAllText(jsonFile);
            var jsonObj = JObject.Parse(json);
            var experienceArrary = jsonObj.GetValue("Notes") as JArray;
            var newnotes = jsonObject;
            experienceArrary.Add(newnotes);
            jsonObj["Notes"] = experienceArrary;
            string newJsonResult = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObj, Newtonsoft.Json.Formatting.Indented);
            System.IO.File.WriteAllText(jsonFile, newJsonResult);

            //  var response = await newJsonResult;
            return Ok("Success");
        }
    }
    catch (Exception ex)
    {
        this.telemetryClient.TrackException(ex);
        return this.StatusCode(StatusCodes.Status500InternalServerError, ex.Message);
    }
}

当我点击提交按钮发送到 api 时的 jquery 代码为空,因此空数据保存在 json 页面中 //数据保存。//`$("#btnSubmit").click(function () { 数据传递(); });

    function datapass() {
        var values = {};

        var values = $("#notesval").val();

        var myvalue = JSON.stringify(values);

        $.ajax({
            url: window.location.origin + "/api/ServiceApi/Submitdata",
            type: 'POST',
            dataType: 'json',
            data: myvalue,
            contentType: 'application/json; charset=utf-8',
            success: function () {

                //console.log("Savesuccessful");
                //console.log(data);
                alert("Record Save Succesfully");

                //$(".loader").hide();
            },
            error: function (error) {
                alert("Error is occured");
                //console.log("My errror values:", error);

            }
        });
    }
   // Date save close.//`
    

【问题讨论】:

  • 可以显示$("#notesval").val()的内容吗?
  • 我要保存内容 $("#notesval").val()
  • 它是一个对象?因为你在之后字符串化?你确定 myvalue 是 json 格式吗?
  • 你需要做两件事:1在javascript中你应该像这样创建你的对象 values = { MyProperty: $("#notesval").val() };然后你把它串起来。 2 在您的控制器/动作中,您需要一个参数 Submitdata([FromBody] MyClass myParam) 并且 MyClass 应该有一个名为 MyProperty 的属性。基本上,您的参数需要与您从 ajax 调用中作为 json 发送的对象相匹配

标签: jquery asp.net-core


【解决方案1】:

您需要执行 3 个步骤:

1.您的 C# 代码应如下所示:

[HttpPost]
public async Task<ActionResult<LeaveSubmit>> Submitdata([FromBody] MyClass myModel)
{
    try
    {
        LeaveSubmit lobj = new LeaveSubmit();
        //  string myobj = Convert.ToString(lobj);
        JObject jsonObject = JObject.FromObject(lobj);
        if (jsonObject == null)
        {
            return BadRequest();
        }
        else
        {
            var json = System.IO.File.ReadAllText(jsonFile);
            var jsonObj = JObject.Parse(json);
            var experienceArrary = jsonObj.GetValue("Notes") as JArray;
            var newnotes = jsonObject;
            experienceArrary.Add(newnotes);
            jsonObj["Notes"] = experienceArrary;
            string newJsonResult = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObj, Newtonsoft.Json.Formatting.Indented);
            System.IO.File.WriteAllText(jsonFile, newJsonResult);

            //  var response = await newJsonResult;
            return Ok("Success");
        }
    }
    catch (Exception ex)
    {
        this.telemetryClient.TrackException(ex);
        return this.StatusCode(StatusCodes.Status500InternalServerError, ex.Message);
    }
}

基本上添加一个参数来保存输入。

2.您需要添加一个表示输入的类,如下所示:

public class MyClass
{
      public string MyProperty {get; set;}
}

3.您的 ajax 调用应如下所示:

function datapass() {
        var values = { MyProperty:$("#notesval").val() };               

        var myvalue = JSON.stringify(values);

        $.ajax({
            url: window.location.origin + "/api/ServiceApi/Submitdata",
            type: 'POST',
            dataType: 'json',
            data: myvalue,
            contentType: 'application/json; charset=utf-8',
            success: function () {

                //console.log("Savesuccessful");
                //console.log(data);
                alert("Record Save Succesfully");

                //$(".loader").hide();
            },
            error: function (error) {
                alert("Error is occured");
                //console.log("My errror values:", error);

            }
        });
    }

【讨论】:

  • 感谢您的澄清。它的工作。再次非常感谢你
  • @samopps 我很高兴它现在可以工作了。如果解决了您的问题,请您标记为答案。谢谢。
  • 但有一件事它调用错误函数。成功功能无法命中。如果我点击按钮,那么空白数据也会保存
  • @samopps 验证完全是一个不同的问题。为此,您需要研究数据注释和 jquery 验证不显眼
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
相关资源
最近更新 更多