JQuery从超链接调用函数

JQuery call function from hyperlink

本文关键字:函数 调用 超链接 JQuery      更新时间:2024-02-26

在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回调函数体中看到它。

有两种选择:

  • 这些数据真的不敏感(是吗?有人会用这些数据破解你的应用程序吗?偷东西吗?意外使用它吗?)

  • 如果答案是"是",那么您应该验证数据是否"真的"来自您。只是不要自己去实现它。您选择的框架肯定有内置的CSRF保护机制。这里有一个链接到spring框架中关于它的文档:spring框架CSRF

你没有说你使用的是什么框架,但在谷歌上搜索任何框架都应该很容易。

这里还有一个用于纯JSP servlet的CSRF保护过滤器-OWASP CSRFGuard项目。(安装和配置在站点底部。)