Javascript .NETAjax异步调用

Javascript .NETAjax异步调用,javascript,c#,jquery,asp.net,ajax,Javascript,C#,Jquery,Asp.net,Ajax,我的任务是包括对我的网页的异步调用,我不知道从哪里开始。目前,我的网页从下拉列表中获取用户输入,将其转换为CodeDesc对象列表,将其全部序列化为JSON,然后将其反序列化,以便在屏幕上的GridView中显示。我可以让它把CodeDesc对象吐回GridView,但这是我的经理想要的方式,所以 无论如何,现在我需要在不重新加载页面的情况下显示结果,经过一些研究,我了解到AJAX是一种很好的方法。不幸的是,我很困惑如何连接所有这些,并实际使用它们。我的尝试如下,但我真的可以在这件事上使用一些指

我的任务是包括对我的网页的异步调用,我不知道从哪里开始。目前,我的网页从下拉列表中获取用户输入,将其转换为CodeDesc对象列表,将其全部序列化为JSON,然后将其反序列化,以便在屏幕上的GridView中显示。我可以让它把CodeDesc对象吐回GridView,但这是我的经理想要的方式,所以

无论如何,现在我需要在不重新加载页面的情况下显示结果,经过一些研究,我了解到AJAX是一种很好的方法。不幸的是,我很困惑如何连接所有这些,并实际使用它们。我的尝试如下,但我真的可以在这件事上使用一些指导

HTML部分:

<script>
$("#Button1").on("click", function () {
        $.ajax({
            type: ??'GET'??,
            contentType: ??
            success: function (?? Call deserializeJSONResults function ??) {
                $('#GridView2').html("");
                for (var i = 0; i < deserializedProduct.length; i++) {
                    $("#GridView2").append(deserializedProduct.id, deserializedProduct.code, deserializedProduct.);
                }
            }
       });
});</script>
后端:

    //Return results to GridView2 as list of CodeDesc objects
    public List<CodeDesc> getQueryResults(string searchTerm)
    {
        try
        {
            List<CodeDesc> L = new List<CodeDesc>();
            string query = "select id, code, descr from code_desc where code_type_id = (select id from code_desc where descr = :searchTerm)";

            // Create the OracleCommand
            using (OracleCommand cmd = new OracleCommand(query, con))
            {
                cmd.Parameters.Add(new OracleParameter("searchTerm", searchTerm));
                con.Open();

                // Execute command, create OracleDataReader object
                using (OracleDataReader reader = cmd.ExecuteReader())
                {

                    while (reader.Read())
                    {
                        CodeDesc c = new CodeDesc
                        {
                            id = reader.GetInt32(0),
                            code = reader.GetString(1),
                            description = reader.GetString(2)
                        };
                        L.Add(c);
                    }
                }
            }

            return L;

        }
    //catch clause here
    }



    //Convert to JSON and parse
    public List<CodeDesc> deserializeJSONResults(string searchTerm)

    {
        List<CodeDesc> L = getQueryResults(searchTerm);
        string json = JsonConvert.SerializeObject(L, Formatting.Indented);

        //deserialize object
        List<CodeDesc> deserializedProduct = JsonConvert.DeserializeObject<List<CodeDesc>>(json);

        return deserializedProduct;
    }
}

任何帮助都将不胜感激。我几乎没有开发经验,这是我第一次使用web/.NET开发

您可能不需要设置contentType。“json”的数据类型似乎是您想要的。当然,在AJAX请求中还需要一个url值,可能还需要一些数据值发送到服务器。听起来你只是在寻找关于在ASP.NET中使用AJAX的教程,Google上应该有很多。看起来您正在使用WebForms,因此您可能会使用WebMethods来处理这些AJAX请求。还请注意,在客户端代码中直接使用WebForms控件可能会让它与WebForms本身协同工作有些困难。为什么deserializeJSONResults方法会序列化一些数据,然后在下一行立即再次对其进行反序列化,而不使用任何其他序列化数据?那毫无意义,完全是浪费时间。如上所述,要使用ajax,您需要重新设计代码—有很多关于在线使用WebMethods的教程,这可能是WebForms应用程序中的最佳解决方案。@ADyson我假设我的经理有关于序列化数据的计划,但我没有听说过。通常,序列化为JSON的唯一原因是将数据发送回web浏览器,作为对AJAX请求的响应。您偶尔会发现人们在其数据存储中以JSON格式存储数据,但通常这是因为他们接收到的数据是该格式的,不希望为了存储数据而必须对其进行转换/解析。因此,当您创建WebMethod时,您需要序列化代码或类似的代码,但我怀疑它还有其他用途。@ADyson将数据发送回web浏览器作为对AJAX请求的响应是我想要做的。你知道如何实施吗?
    //Return results to GridView2 as list of CodeDesc objects
    public List<CodeDesc> getQueryResults(string searchTerm)
    {
        try
        {
            List<CodeDesc> L = new List<CodeDesc>();
            string query = "select id, code, descr from code_desc where code_type_id = (select id from code_desc where descr = :searchTerm)";

            // Create the OracleCommand
            using (OracleCommand cmd = new OracleCommand(query, con))
            {
                cmd.Parameters.Add(new OracleParameter("searchTerm", searchTerm));
                con.Open();

                // Execute command, create OracleDataReader object
                using (OracleDataReader reader = cmd.ExecuteReader())
                {

                    while (reader.Read())
                    {
                        CodeDesc c = new CodeDesc
                        {
                            id = reader.GetInt32(0),
                            code = reader.GetString(1),
                            description = reader.GetString(2)
                        };
                        L.Add(c);
                    }
                }
            }

            return L;

        }
    //catch clause here
    }



    //Convert to JSON and parse
    public List<CodeDesc> deserializeJSONResults(string searchTerm)

    {
        List<CodeDesc> L = getQueryResults(searchTerm);
        string json = JsonConvert.SerializeObject(L, Formatting.Indented);

        //deserialize object
        List<CodeDesc> deserializedProduct = JsonConvert.DeserializeObject<List<CodeDesc>>(json);

        return deserializedProduct;
    }
}