json数据提取并使用ajax调用传递给C#

Posted

技术标签:

【中文标题】json数据提取并使用ajax调用传递给C#【英文标题】:json data extraction and pass to C# using ajax call 【发布时间】:2020-08-17 20:30:19 【问题描述】:

我有一个从 IndexedDb 数据源获得的 json 数据。当我执行 Json.stringify 时,我得到的结果为

["key":1,"value":"itemcode":"ItemA3","serialno":"erw33","saledate":"2020-05-03","id":1,"key":2,"value":"itemcode":"ItemA4","serialno":"erewrwerwer","saledate":"2020-05-03","id":2]

我希望仅从该字符串中提取值部分并使用 ajax 调用我希望将其传输到具有数组 args 的 c# 函数。

 $.ajax(
            url: 'Export.aspx/GetDetails',
             type: 'POST',
             contentType: 'application/json; charset=utf-8',
             dataType: 'json',
             data: "detls:" + serializedData + "",
             success: function (r) 
                 alert("yes");
             ,
             error: function (jqXHR, textStatus, errorThrown) 
                 alert(errorThrown);
             
         );

c#函数是

[System.Web.Services.WebMethod]
public static string  GetDetails(string [] detls)

 //get  itemcode , serialno , saledate , id  
  return "s";

我收到内部服务器错误

【问题讨论】:

【参考方案1】:

使用forEach 循环提取value

let serializedData = [];
dataFromIndexedDb.forEach(item => 
    serializedData.push(item.value);
);
alert(JSON.stringify(serializedData));

dataFromIndexedDb 是来自IndexedDb 数据源的数据。

【讨论】:

它现在返回 ["itemcode":"ItemA3","serialno":"erw33","saledate":"2020-05-03","id":1," itemcode":"ItemA4","serialno":"erewrwerwer","saledate":"2020-05-03","id":2] 但我仍然收到内部服务器错误。我希望它是因为 C# 函数 dowsnt 匹配 ajax 调用的参数。如何在 c# 中获取此字符串化数据 嗨。您可以尝试将参数更改为对象数组GetDetails(object [] detls)。这不是解决方案,只是检查GetDetails 方法是否被调用的方法。如果可行,您可以在后面的代码中将对象转换为string,或者再次将参数设置为string-s 的数组并以serializedData.push(JSON.stringify(item.value)); 的方式填充serializedData

以上是关于json数据提取并使用ajax调用传递给C#的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JSON 传递给 REST API (IBKR)

通过 AJAX 调用将 JSON 对象列表传递给控制器

Laravel 5:在路由中获取 ajax 数据并传递给控制器

将数据传递到处理程序的 Jquery ajax 不起作用(Asp.net、C#、Jquery)

如何从 json 中提取数据并在 Next.js 中作为 props 传递

如何将 JSON 对象内的 JSON 数组传递给 jQuery 自动完成