AJAX调用不起作用,因为它继续转到链接
AJAX call is not working because it proceeds to go to the link
我有一个从数据库动态生成的PDF
链接列表。我想要一个日志来跟踪下载每一个的用户。
它似乎不起作用,因为点击链接后,在重定向之前没有时间执行ajax
。
这是javascript:
function insertlog(linkName)
{
$.post( "insertlog.php", { linkName: linkName, user: "<?=$username?>" } );
}
这是链接:
<a href="http://www.test.com/media/pdf/test.pdf" onclick="insertlog('test.pdf')">test.pdf</a>
试试这个:
<script>
function logAndGo(target)
{
$.post( "insertlog.php", { linkName: target, user: "<?=$username?>" } )
.then(function(url) {
window.location = url;
});
}
</script>
让服务器返回正确的URL作为对日志POST的响应。然后将链接更改为:
<a href="#" onclick="insertlog('test.pdf')">test.pdf</a>
一个更好的选择是@dave提出的:创建一个处理重定向的服务器端页面,这样你就可以做一些类似的事情:
<a href="getFile.php?id=1234">test.pdf</a>
通过在服务器端处理它,您对日志记录、重定向到哪个URL等有了更多的控制
我认为,对于您想要做的事情,最好的解决方案是不要链接到pdf,而是直接链接到您的ajax脚本调用的站点,并将实际请求的源作为参数传递。
在脚本中,您可以进行日志记录并重定向到实际源(或者让脚本只返回实际源)。
这也允许您跟踪阻止Javascript的用户。而且它不需要两个请求。并且不需要维护不必要的Javascript代码。
在$.post
callback
中重定向。
<script>
function logAndGo(target)
{
$.post( "insertlog.php", { linkName: target, user: "<?=$username?>" }, fucntion(){
window.location = 'http://www.test.com/media/pdf/' + target;
});
}
</script>
感谢大家的帮助。我接受了内特的建议,这是最终的解决方案:
function insertlog(linkName)
{
$.post( "insertlog.php", { linkName: linkName, user: "<?=$username?>" },
function(linkName) {
window.location = "http://www.test.com/media/pdf/"+linkName;
});
}
然后在我的insertlog.php的末尾添加了一个带有PDF文件名的echo。
我的链接如下:
<a onclick="insertlog('1104.pdf')" href="#">1104.pdf</a>
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 如何使用jQuery自动打开页面上的所有链接
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- jquery动画可以通过编程链接吗
- 在单击href链接的同时下载文件
- 尽管链接成功并已成功下载,但未找到NPM模块
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 单击页面上的链接后高度发生变化
- 将纯文本URL转换为可单击链接
- 将单击事件附加到按钮或链接上的类,该按钮或链接会触发 AJAX 帖子,然后延迟并继续原始操作
- AJAX调用不起作用,因为它继续转到链接
- 我可以继续使用以前的阻止链接吗?
- grunt是如何继续构建的,即使是grunt contrib符号链接也是如此;找不到路
- 当我传入一个参数时,即使使用.prventDefault,链接也会继续激发
- 如何有效地等待链接文件在继续运行脚本之前完成运行
- 如何使照片的链接添加到我的文件中,并自动继续使用JavaScript
- 点击链接后选择继续或不继续
- 可以在变量声明后继续链接吗?
- ajax 调用另一个 url 重置 JsessionId 因此无法继续处理其他链接