使用 Javascript 函数将数据传输到 C# Web 服务并以 json 格式获取返回失败



1- 我用javascript从HTML表单中收集了登录名和密码

2-然后使用javascript函数调用C#网络方法,将登录名和密码发送到服务器

3-服务器收集数据并应返回一个json对象 但是当我尝试显示返回 JSON 的结果时,没有任何令人高兴的。无值为返回。

请帮忙

这是客户端的javascript代码和HTML代码

<script>
function OnRequestComplete(result, userContext, methodName) {
var Person = eval(`enter code here`'(' + result + ')');
alert(Person.Login);
alert(Person.Password);
}
function OnRequestError(error, userContext, methodName) {
if (error != null) {
alert(error.get_message());
}
}
function SubmitData() {
var Login = document.getElementById("Login").value;
var Password = document.getElementById("Password").value;
PageMethods.GetData(Login, Password, OnRequestComplete, OnRequestError);
} 
</script>

这是服务器端的代码

public partial class login : System.Web.UI.Page
{
private static string SerializeObjectIntoJson(Person p)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(p.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, p);
ms.Flush();
byte[] bytes = ms.GetBuffer();
string jsonString = Encoding.UTF8.GetString(bytes, 0, bytes.Length).Trim('');
return jsonString;
}
}
[WebMethod]
public static string GetData(string loginParam, string passwordParam)
{
Person p = new Person();
p.Password = passwordParam;
p.Login = loginParam;
// throw new Exception("Custom Error :) ");
return SerializeObjectIntoJson(p);
}

} 人员类

public class Person
{
string loginParam = string.Empty;
string passwordParam = string.Empty;
public string Password
{
get { return passwordParam; }
set { passwordParam = value; }
}
public string Login
{
get { return loginParam; }
set { loginParam = value; }
}
}

首先,请格式化底部?很难阅读。

我的猜测是SerializeObjectIntoJson()出了点问题,如果你想将类对象转换为JSON,微软建议使用 Json.NET,那么它会执行以下操作:

private static string SerializeObjectIntoJson(Person p) {
return JsonConvert.SerializeObject(p);
}

可以使用 Nuget 包管理器将 Json.net 添加到项目中。

Web 服务 GetData 相应地以这种形式返回 seriablize 对象。

{"Login":"aaaaadd","Password":"ccc"}.我可以捕获此字符串。但是当涉及到调用javascript函数OnRequestComplete在客户端取回这个结果时,当我调用该函数时我无法获取任何数据

function OnRequestComplete(result, userContext, methodName) {
var Person = eval('(' + result + ')');
alert(Person.Login);
alert(Person.Password);
}

相关内容

  • 没有找到相关文章

最新更新