我正在尝试使用 Ajax 从客户端 JQuery 将 JSON 格式发送到 ASP.net(后面的 C# 代码)并保存数据。但是我无法这样做。我对如何在服务器端处理客户端请求知之甚少。
提前致谢!
我的代码如下:
客户端:
$.ajax(
{
type: "POST",
url: "Default.aspx/save",
data: "{'data': " + JSON.stringify(prj) + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
if (response.ok) {
prof.stop();
if (response.data) {
ge.loadProject(response.data);
} else {
ge.reset();
}
} else {
var errMsg = "Errors saving project\n\n";
if (response.message) {
errMsg = errMsg + response.message + "\n";
}
if (response.errorMessages.length) {
errMsg += response.errorMessages.join("\n");
}
alert(errMsg);
}
}
});
我不太熟悉在代码隐藏中处理 JSON,所以我尝试了一些方法,并且我在 C# 中得到了错误代码:
[WebMethod]
public static string save (object data)
{
//String s1 = data.ToString();
//Dictionary<string, object> tmp = (Dictionary<string, object>)data;
//DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(string));
//MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(data));
//string obj = (string)ser.ReadObject(ms);
string s2 = data.ToString();
GC.GClass g = new GC.GClass();
g.Save(s2);
return s2;
}
将数据保存为文件的 GC.GClass 代码:
namespace GC
{
public class GClass
{
string fileLoc = @"c:\Users\Pouria\Desktop\sample1.txt";
public GClass()
{
}
public void Save(string data)
{
FileStream fs = null;
if (!File.Exists(fileLoc))
{
using (fs = File.Create(fileLoc))
{
}
if (File.Exists(fileLoc))
{
using (StreamWriter sw = new StreamWriter(fileLoc))
{
sw.Write(data);
}
}
}
}
}
}
在我的响应文件和我的 sample1.txt 中,我将其作为输出:
System.Collections.Generic.Dictionary`2[System.String,System.Object]
我无法上传 FireBug 的图像,但这些是响应选项卡消息:
{"d":"System.Collections.Generic.Dictionary`2[System.String,System.Object]"}
和 JSON 选项卡:
"System.Collections.Generic.Dictionary`2[System.String,System.Object]"