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