gpt4 book ai didi

c# - 使用 JQUERY ajax 函数将 JSON 对象发送到 ASP.NET Web 服务

转载 作者:太空狗 更新时间:2023-10-29 21:42:10 29 4
gpt4 key购买 nike

我想在 aspx 页面的客户端创建对象。我想为这些 javascript 类添加功能,让生活更轻松。

实际上我可以获得并使用从服务返回的对象(从服务器端类派生)。当我想通过 jquery ajax 方法从客户端发送对象时,我做不到:)

这是我的 javascript 类:

function ClassAndMark(_mark, _lesson){

this.Lesson = _lesson;
this.Mark = _mark;
}


function Student(_name, _surname, _classAndMark){

this.Name = _name;
this.SurName = _surname;
this.ClassAndMark = _classAndMark;
}

这是Student类调用Web Service的方法:

JSClass.prototype.fSaveToDB(){
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/WS/SaveObject.asmx/fSaveToDB"),

data: ????????????,
// This might be: JSON.stringify(this) ?
// Web service method has a parameter, name is _obj
// if i don't send data with parameter, i'm getting this error:
// Invalid web service call, missing value for parameter: '_obj'
//
// Should i send it like that:
// data: "{_obj:" + JSON.stringify(this) + "}"
//
// I tried to wrap this with parameter like that:
// data: JSON.stringify("{_obj:" + this + "}")
//
// But i got this error:
// Cannot convert object of type 'System.String' to type 'System.Collections.Generic.IDictionary`2[System.String,System.Object]'

dataType: "json"
});
}

创建 javascript 对象并调用其方法将其发送到网络服务:

实际上我不知道服务器端类和方法的定义应该是什么,但我认为:

class ClassAndMark{

public string Lesson ;
public string Mark ;
}


class Student{

public string Name ;
public string SurName ;
public ClassAndMark classAndMark ;
}

Web 服务在下面,但我还是无法得到应该用什么代替 ???? :

[WebMethod()]
public Student fSaveToDB(???? _obj)
{
// How can i convert input parameter/parameters
// of method in the server side object?

// SQL operations
// srting QInsert = "INSERT INTO tableName (......) VALUES (.....)";
// ...
// ..
// .

return new Student{
Name = ???, // deserialize _obj and pass its Name value
SurName = ???, // deserialize _obj and pass its SurName value
classAndMark = ???, // deserialize _obj and pass its classAndMark value
};
}

最佳答案

第一步,客户端:您必须将客户端对象序列化为 JSON,我个人使用 JSON2 库的 stringify() 方法:http://www.json.org/js.html

data: JSON.stringify(myObj)

第 2 步,服务器端:您必须将序列化的对象转换为您的 C# 代码“可食用”的东西。在这里你可以使用微软的 JavaScriptSerializer 类的 deserialize() 方法(但如果你没有安装 SP,它在 .net 3.5 中可能会有一些问题),或者 JSON.net 库 http://james.newtonking.com/pages/json-net.aspx

服务器端方法签名应该是:

fSaveToDB(Object myObj)

其中“myObj”是您的客户端对象容器的名称:

{myObj: your object...}

关于c# - 使用 JQUERY ajax 函数将 JSON 对象发送到 ASP.NET Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2645700/

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