我从未使用过ajax。
我需要知道是否可以使用ajax在db上运行查询(sql server 2005)。
我的目标是通过刷新页面来运行查询。
你有什么想法吗?
答案 0 :(得分:5)
直接,没有。这是一件非常好的事情,因为JavaScript通常在不受信任的机器上运行。
但是让你的AJAX关闭一个回调(例如一个帖子)然后让它在服务器端进行查询应该很容易。
答案 1 :(得分:4)
正如MarkusQ所说,不可能直接执行此操作,但您可以调用Web服务或页面方法来执行数据库查询并将结果返回给客户端。
这样的页面方法(这是我的头脑和未经测试。我也假设您使用的是asp.net 3.5)
public partial class _Default : Page
{
[WebMethod]
public static string PerformDatabaseQuery()
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString)
{
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "SELECT records FROM myTable";
cmd.CommandType = CommandType.Text;
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
StringBuilder sb = new StringBuilder();
while (reader.Read())
{
sb.Append((string)reader["records"]);
//May want to do some other formatting here
}
return sb.ToString();
}
}
}
}
然后从客户端调用页面方法。我将在这里使用jQuery
$.ajax({
type: "POST",
url: "Default.aspx/PerformDatabaseQuery",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
//Do something with the returned data
}
});
您可以使用JavaScript和在EnablePageMethods = true
控件上设置ScriptManager
时生成的JavaScript代理类来调用它。
function CallPerformDatabaseQuery()
{
PageMethods.PerformDatabaseQuery(onSuccess,onFailed);
}
function onSuccess(result,userContext,methodName)
{
// Do something with returned data
}
function onFailed(error,userContext,methodName)
{
alert("An error occurred")
}
答案 2 :(得分:0)
AJAX =>客户端 PHP / ASP / X =>服务器端(数据库)
基本上,任何客户端都在“现在”发生,而服务器端脚本“已经发生”。
你无法使用JS或类似的东西对数据库执行查询,AJAX只不过是用户体验错误,即使我们可以说“通过AJAX获取数据库记录”,实际上并不是正在发生的事情。
如果AJAX只是更多的JavaScript(Asynchronus JS,也就是说,发生在它自己的“时间轴”/线程中,而不是主要的那个),那么这意味着从数据库中获取数据(或者通过AJAX做任何事情)与具有静态脚本的链接相同,这意味着,您单击此处,您将进入获取(服务器端)并显示(客户端)信息的页面。
现在假设您只是这样做,但是不是将主线程转移到该操作,而是启动异步线程(例如,可以像任何其他链接一样工作),这将发布/获取数据并获得X响应,您可以在以后通过JS处理,从而为您提供“实时查询”的错觉。