gpt4 book ai didi

javascript - 我似乎无法发布一系列对象

转载 作者:行者123 更新时间:2023-11-28 00:50:03 25 4
gpt4 key购买 nike

好吧,这就是我现在所在的位置。

我有一些代码可以将一系列好东西发送到 .NET WebAPI (c#)。

var questions = [];
$('#questions').find('input').each(function(){
var text = $(this).val();
questions.push({ ID: 123, Question: text });
});

$.ajax({
type: 'POST',
url: _apiPath + '/main/savequestions',
data: { "" : questions }
}).done(function(data){
alert(JSON.stringify(data));
});

所以我不久前了解到 .NET Web API 与数组混淆,并且存在一个已知的错误,这就是为什么您必须使用“”作为属性名称发送数据。

这是我的 Web API Controller :

  [Route("main/savequestions")]
[HttpPost]
public List<Question> SaveQuestions(List<Question> questions)
{
using (var mc = new MyContext())
{
List<Question> list = new List<Question>();

if (questions != null)
{
foreach (var item in questions)
{
var dbQ = new Question();
dbQ.ID = Guid.NewGuid();
dbQ.ToolID = item.ID;
dbQ.Question = item.Question;
mc.Questions.Add(dbQ);

list.Add(dbQ);
}
}

mc.SaveChanges();

return list;
}
}

当我们在桌面上时,这工作得很好。一切都保存...有效...太棒了。

所以我们正在使用PhoneGap,当我们使用phonegap应用程序来模拟运行此代码的应用程序时,不会保存任何数据。我们已经检查并确保我们发送的 JSON 是相同的...但是当我们运行它时, Controller 似乎得到一个空数组,因此它没有保存任何内容。

这种不一致足以让我抓狂。

救命!

大卫

最佳答案

尝试以下操作:

  1. 特别将 jQuery AJAX 调用中的“contentType”设置为 JSON。 jQuery 提交为 'application/x-www-form-urlencoded;默认情况下 charset=UTF-8'。
  2. JSON.stringify 你的数组

这将告诉 WebAPI 在模型绑定(bind)期间使用 JSON MediaTypeFormatter: http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

我不确定为什么桌面浏览器和移动浏览器之间存在差异,除非桌面浏览器或 jQuery 以不同的方式处理“数据”。

$.ajax({
type: 'POST',
url: _apiPath + '/main/savequestions',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(questions)
}).done(function(data){
alert(JSON.stringify(data));
});

关于javascript - 我似乎无法发布一系列对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26898122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com