JQuery 从超链接调用函数
JQuery call function from hyperlink
在 JSP / JQUERY 中,我在列表视图中创建超链接的动态列表。我不想将敏感信息作为 GET 参数传递回服务器,而是希望单击超链接调用一个函数,我可以在其中传递参数,然后执行 POST。
这是生成列表的相关代码部分:
<!-- Page -->
<div data-role="page" data-add-back-btn="false">
<!-- Content -->
<div data-role="content" data-theme="c">
<ul data-role="listview" data-inset="true" data-filter="true" data-autodividers="false">
<%
for (int i=0; i<srVector.size(); i++) {
sr = (SR)srVector.get(i);
%>
<li>
<a href="/myServlet?cmd=getDetails&srId=<%=sr.SR_ID%>&empCode=<%=empCode%>"><h3><%=sr.ACCT_NAME%></h3></a>
</li>
<%
}
%>
</ul>
</div> <!-- End Content -->
非常感谢任何帮助。
你可以这样做:
您的主播:
// you can use whatever selector you like
// this example use [data-post-link] attribute
<a href="url/to/send/to" data-post-link="send-form" data-id="<%=sr.SR_ID%>">send me</a>
绑定jquery回调到主播:
// you can use whatever selector you like
$('[data-post-link]').on('click', function() {
send(this);
});
这是发送函数:
var send = function(element) {
var value = {
// you can put any data you want
'id': $(element).attr('data-id')
};
$.ajax({
type: "POST",
url: $(element).attr('href'),
data: value // value object created above
});
};
但是,无论如何,您的敏感数据都会暴露,因为这样您必须将其打印在您的标记中,任何人都可以看到。
即使没有,别人也可以在你的 js 回调函数体中看到它。
有两种选择:
这些数据真的不敏感(是吗?有人可以使用这些数据破解您的应用程序吗?偷东西?无意中使用它?)
如果答案是 "yes",那么您应该验证数据是否来自您 "really"。只是不要自己实施。您选择的框架肯定内置了 CSRF 保护机制。这是 link 在 spring 框架中关于它的文档:Spring framework CSRF
你没有说你用的是什么框架,但是应该很容易google任何框架。
另外 here 是纯 JSP servlet 的 CSRF 保护过滤器 - OWASP CSRFGuard 项目。 (安装和配置在网站底部。)
在 JSP / JQUERY 中,我在列表视图中创建超链接的动态列表。我不想将敏感信息作为 GET 参数传递回服务器,而是希望单击超链接调用一个函数,我可以在其中传递参数,然后执行 POST。
这是生成列表的相关代码部分:
<!-- Page -->
<div data-role="page" data-add-back-btn="false">
<!-- Content -->
<div data-role="content" data-theme="c">
<ul data-role="listview" data-inset="true" data-filter="true" data-autodividers="false">
<%
for (int i=0; i<srVector.size(); i++) {
sr = (SR)srVector.get(i);
%>
<li>
<a href="/myServlet?cmd=getDetails&srId=<%=sr.SR_ID%>&empCode=<%=empCode%>"><h3><%=sr.ACCT_NAME%></h3></a>
</li>
<%
}
%>
</ul>
</div> <!-- End Content -->
非常感谢任何帮助。
你可以这样做:
您的主播:
// you can use whatever selector you like
// this example use [data-post-link] attribute
<a href="url/to/send/to" data-post-link="send-form" data-id="<%=sr.SR_ID%>">send me</a>
绑定jquery回调到主播:
// you can use whatever selector you like
$('[data-post-link]').on('click', function() {
send(this);
});
这是发送函数:
var send = function(element) {
var value = {
// you can put any data you want
'id': $(element).attr('data-id')
};
$.ajax({
type: "POST",
url: $(element).attr('href'),
data: value // value object created above
});
};
但是,无论如何,您的敏感数据都会暴露,因为这样您必须将其打印在您的标记中,任何人都可以看到。
即使没有,别人也可以在你的 js 回调函数体中看到它。
有两种选择:
这些数据真的不敏感(是吗?有人可以使用这些数据破解您的应用程序吗?偷东西?无意中使用它?)
如果答案是 "yes",那么您应该验证数据是否来自您 "really"。只是不要自己实施。您选择的框架肯定内置了 CSRF 保护机制。这是 link 在 spring 框架中关于它的文档:Spring framework CSRF
你没有说你用的是什么框架,但是应该很容易google任何框架。
另外 here 是纯 JSP servlet 的 CSRF 保护过滤器 - OWASP CSRFGuard 项目。 (安装和配置在网站底部。)