我正在查看cfhttp标签,可以使用它通过点击链接传递变量吗?
<cfhttp method="Post" url="myurl">
我试图在链接点击上传递变量(例如,用户ID),但通过GET发送似乎有点不安全......
答案 0 :(得分:1)
我的原始答案完全错过了标记,但我无法删除已接受的答案,因此为了清楚起见,我将更改此答案以同意上述Billy的评论。
CFHTTP用于向另一个网站发出服务器端请求(就像您自己访问该网站一样),处理该请求的结果,并将它们存储在变量中,然后您可以使用该变量执行其他操作任务(例如,解析网站主页的特定值)。
您要求的内容似乎是完全不相关的功能,其中包括:
实现此目的的最简单方法是使用隐藏的表单,然后提交超链接提交表单。这符合比利在你的问题评论中的建议:
<form name="myForm" method="post" action="pageToSendVarsTo.cfm">
<input type="hidden" name="username" value="theuser" />
<input type="hidden" name="id" value="42" />
</form>
<a href="#" onClick="document.myForm.submit();">the link to click</a>
在这里,您有一个HTML表单,其中包含两个隐藏字段,用户名和ID,这些字段在页面上不显示,因为它们是隐藏的(但请注意,如果用户查看您的页面源,仍然可以查看)。接下来,“点击链接”明显显示为指向用户的超链接。单击时,JavaScript用于模拟表单提交的触发;它本质上表现为表单有一个提交按钮,用户点击了提交按钮。对于此示例的表单,这意味着用户名和id值都会被HTTP发布到“pageToSendVarsTo.cfm”页面,在这些页面中可以使用它们继续处理。
答案 1 :(得分:1)
如果您不想将变量发送回CF来执行POST,您也可以使用一些JavaScript魔法来执行此操作。例如:
<a class="postLink" href="foo.cfm?var1=a&var2=b">Click Me</a>
现在,假设您要将foo.cfm作为POST请求,将var1和var2作为POST变量传递(假设为jQuery):
<script>
$(function () {
$(document).on('click', 'a.postLink', function (e) {
e.preventDefault();
var newForm = $("<form method='POST'></form>");
if ($(this).attr('href').indexOf('?') != -1)
{
newForm.attr("method", $(this).attr('href').substring(0, $(this).attr('href').indexOf('?')));
var post_args = $(this).attr('href').substring($(this).attr('href').indexOf('?')+1, $(this).attr('href').length).split('&');
for (var i in post_args)
{
var keyVal = post_args[i].split('=');
newForm.append($("<input>", { type: "hidden", name:keyVal[0], value:keyVal[1] }));
}
}
else
{
newForm.attr("method", $(this).attr('href'));
}
console.log(newForm);
newForm.submit();
});
});
</script>
这将停止使用“postLink”类标记的所有链接的正常处理,而不是转到该页面,将构造一个新的表单对象,其中包含作为表单参数包含的链接URL解析的参数。然后它将使用POST将该表单提交到脚本指向的相同基本href。这是一个工作小提琴:http://jsfiddle.net/VGaPH/