我是编程的新手,所以请耐心等待。
背景
我创建了一个jQuery函数,用于获取页面上各种文本框的文本,顶部和左侧坐标,我希望使用AJAX POST将所有这些信息传递给用C#编写的Web服务。 / p>
我成功地将一个文本框的数据传递给了Web服务方法,并将一条记录插入到SQL数据库中(我不会详细讨论这个问题!)。
为了编写多个文本框的数据,我使用的是一个包含对象数组的jQuery函数,我从以下帖子中的第一个选项中获取灵感: Jquery multidimensional arrays
这是我的代码:
function Note(noteText, topCoord, leftCoord) {
return {
noteText: noteText,
topCoord: topCoord,
leftCoord: leftCoord
}
var noteData = [];
function SaveNote() {
{'input').filter("notes").each(function(index) {
var noteText = ($this)).val();
var coord = ($this)).offset();
var topCoord = coord.top;
var leftCoord = coord.left;
noteData.push(Note(noteText,topCoord,leftCoord));
var jsonText = JSON.stringify({ noteData : noteData});
});
警报变量jsonText我收到以下内容:
{“noteData”:[{“noteText”:“这是注释文字”; “topCoord”:23.33; “leftCoord”:12.23}, {“noteText”:“注意文字2”; “topCoord”:23.33; “leftCoord”:12.23}]}
问题:
我希望这是有道理的。 提前谢谢。
答案 0 :(得分:3)
创建一个可以反序列化为的类:
public class Note()
{
public string noteText { get; set; }
public float topCoord { get; set; }
public float leftCoord { get; set; }
}
对其进行反序列化
var jsSer = new JavaScriptSerializer();
Note note = jsSer.Deserialize(json);
答案 1 :(得分:1)
一种选择是在您的Web服务中使用Json.net库。它是一个开源库,可以从http://json.codeplex.com/
下载使用该库,您可以使用一行代码将Json字符串转换为Xml:
XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(json);
一旦将其作为XML,就可以很容易地保存到数据库中。 或者,如果您愿意,可以创建一个.net对象来表示Json数据,并使用库中的JsonSerializer类将Json文本反序列化为.net对象。
找到Json.net库的文档答案 2 :(得分:0)
该参数将作为字典数组到达您的方法。为您的WebMethod
使用以下原型(如果这是在Web服务中而不是页面方法中,请删除static
标识符):
[WebMethod]
public static void MyMethod(Dictionary<string, object>[] noteData)
从这里,您可以迭代每个数组成员并根据需要访问元素:
foreach (Dictionary<string, object> note in noteData) {
DataObject myDataObject = new DataObject();
myDataObject.noteText = note["noteText"];
...
}
如果您不习惯将JavaScript中的数据导入您的网络服务,请查看this useful article from Encosia以获取有关如何利用jQuery使用此信息调用您的网络服务的一般信息。