在链接上运行数据库查询单击并仍然加载链接URL

时间:2014-11-13 07:41:31

标签: javascript jquery mysql ajax coldfusion

问题:是否可以通过<a>代码触发数据库查询,并仍然将访问者发送到<a>的网址?

我的第一个想法是拥有一个每个链接所在的页面,该页面将保存链接的URL,但在将用户重定向到该链接之前,url运行一个查询,将url推送到数据库中的其他Session信息和查询成功后,将该人员发送到URL。

是否有更好的方法可以使用AJAX或JQuery完成此任务?

该页面是用ColdFusion编写的。

2 个答案:

答案 0 :(得分:0)

您可以使用所有链接都经过的.cfm文件,在该cfm文件中,您可以将该点击记录或记录到数据库中。 Coldfusionbloggers.org做了类似的事情。你在想什么是好的。我不会使用ajax,我不会这么想。

答案 1 :(得分:0)

您可以在OnRequestStart()中为application.cfc执行此操作 - 或者,如果您仍在使用Application.cfm,请在文件的早期,以便尽可能多地使用它...

您可以在一个表中执行此操作并将数据存储为JSONSerialization。我

<cfquery>
    INSERT INTO SavedInfo(userID,page_url,qs,scopedump)
    VALUES(<cfqueryparam cfsqltype="cf_sql_integer" value="#session.userID#">,
        <cfqueryparam cfsqltype="cf_sql_nvarchar" value="#cgi.script_name#">,
        <cfqueryparam cfsqltype="cf_sql_nvarchar" value="#cgi.query_string#">,
        <cfqueryparam cfsqltype="cf_sql_nvarchar" value="#SerializeJSON(session)#">)
</cfquery>

注意:

  • 这是一个简单的演示,还有其他自定义JSON解决方案,您可能宁愿使用那些内置于JSON中的CF.
  • 我希望您能够对您的密码进行哈希处理,或者至少加密。如果不是,请立即开始执行此操作,并确保在此数据中看不到原始密码。没有人,即使是网站的开发者,也应该看到原始用户密码。
  • 我还包含一个日期时间,让我的数据库使用默认值自动填充。
  • 我对此设置了一些限制,以便仅在某些文件夹中进行跟踪(或者在某些文件夹中没有跟踪。

然后,在显示页面上,您可以列出

<cfquery name="GetList">
select UserID,page_url,qs
  from SavedInfo
 order by dumpID desc
</cfquery>

在这种情况下,通常不仅仅选择*会很好,但在这里它特别好。您可能很快就会输出数千行,并且您不需要每行都有scopedump的大量数据。

将结果链接到显示scopedump并使用

的页面
<cfquery name="GetDump">
select *
  from SavedInfo
 where DumpID = <cfqueryparam type="cf_sql_integer" value="#url.dumpID#">
</cfquery>

<cfoutput query="GetDump">#Userid#, #page_url#?#qs#, etc...
  <cfset as_cf = DeSerializeJSON(scopedump)>
  <cfdump var="#as_cf#">
</cfoutput>