使用 Javascript 函数将数据传输到 C# webservice 并在 json 中获取返回失败

Posted

技术标签:

【中文标题】使用 Javascript 函数将数据传输到 C# webservice 并在 json 中获取返回失败【英文标题】:Using Javascript function to transmit data to C# webservice and get return in json failed 【发布时间】:2019-12-12 04:14:11 【问题描述】:

1- 我已经使用 javascript 函数从 html 表单中收集了登录名和密码

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

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('\0');
            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; 
    

【问题讨论】:

这可能会有所帮助:***.com/questions/6928533/… 【参考方案1】:

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

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

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于使用 Javascript 函数将数据传输到 C# webservice 并在 json 中获取返回失败的主要内容,如果未能解决你的问题,请参考以下文章

如何将 C# 对象作为参数传递给 Javascript 函数

如何使用asp.net c#将HTML格式的电子邮件正文传递给javascript函数

使用ajax将javascript数组发送到代码后面(c#)

通过 Javascript 将 DatePicker 值传递给 C# 控制器

asp.net调用javascript返回值

将 Javascript Reduce 函数转换为 C#