没有data-esid,一切正常,我无法在data-esid中发送数据。

我的错误在哪里?

<a href="#" data-esid="123" data-lname="Saracoglu" onclick="goToWorld();">link1</a>


Javascript:

 function goToWorld() {
      var idno = $(this).data("esid");
      var last_name = $(this).data("lname");
      var dataString = 'ESidNO='+idno+'&last_name='+last_name;

       $.ajax({
           type:'POST',
           data:dataString,
           url:'Lib/Path/Page.php',
           success:function(data) {
               alert(data);
           }
       });
 return false;
 }

最佳答案

无论有没有esid,我都看不到它怎么工作。问题在于无论函数中的this是什么,它都不是您单击的链接。

您也没有取消click事件,返回了false,但是没有在嵌入式点击处理程序中使用该值。但是,这只会导致页面跳到顶部,因为链接是#

解决此问题的最简单方法是通过将处理程序附加到链接,例如使用类。

结果将是这样的:

<a href="#" data-esid="123" data-lname="Saracoglu" class="goToWorld">link1</a>


javascript:

$('.goToWorld').on('click', function(e) {
      // Now $(this) is the link that was clicked
      var idno = $(this).data("esid"),
          last_name = $(this).data("lname");

      // Cancel the default click event
      e.preventDefault();

      $.ajax({
           type: 'POST',
           data: {
                ESidNO: idno,
                last_name: last_name
           },
           url: 'Lib/Path/Page.php',
           success: function(data) {
               alert(data);
           }
      });
});


请注意,我还用对象替换了数据,以便可以正确转义值。这不会与示例代码有所不同,但是当您的值包含必须在url中转义的字符时,这不会有所不同。

09-25 18:17