PHP OnClick返回未定义

时间:2018-07-05 14:31:39

标签: javascript php html ajax

我有一个while循环来建立数据表和onclick,我想调用一个函数,但是当我调用该函数时,它并没有从onclick传递中获取信息。

HTML:

echo "<td width='25%' align='center'><a href='javascript:void(0)' id='{$row['id']}' class='{$row['status']}' onclick='hello()'> {$row['status']} </a></td>";

JS:

//onclick function
function hello()
{
   // Get the ID of the button that was clicked on
   var id_of_status_to_update = $(this).attr("id");
   var status_to_be_updated = $(this).attr("class");
   var varData = 'id=' + id_of_status_to_update + '&UserStatus=' + 
   status_to_be_updated;
   console.log(varData);

   // Make an AJAX request
   $.ajax({
      url: "php/processor.php", //This is the page where you will handle your SQL insert
      type: "POST",
      data: varData, //The data your sending to processor.php
      async: false, 
      success: function(){
          // location.reload();
          alert("Hello Function");
      },
      error: function(){
          alert("There was a problem, please try again or contact the admin for assistance.");
      }   
    });
};

但是当我检查控制台日志时,我看到id和userstatus是未定义的,而不是应该传递的id和class属性。有什么帮助吗?我知道该函数已正确调用,因为我收到了成功警报。

3 个答案:

答案 0 :(得分:1)

改为使用此:

$('#id').on('click', function(){
//Do something
//console.log(this)
})

当然,您需要为元素传递一个固定的ID,或者可以使用$('。class')并向其传递一个类!

答案 1 :(得分:1)

要解决未定义的问题,请删除古老的onclick方法,并使用适当的jquery .click事件处理程序,然后正确使用$(this)

首先将您的html版本调整为此:

echo "<td width='25%' align='center'><a href='#' id='{$row['id']}' class='clicker {$row['status']}'> {$row['status']} </a></td>";

然后将javascript进行一些调整:

$(document).ready(function() {
    $(".clicker").click(function(e){
        e.preventDefault(); // new line to stop the anchor click default behavior
        var id_of_status_to_update = $(this).attr("id");
        var status_to_be_updated = $(this).attr("class");
        // ... the rest you had is fine as is ...
    });
});

这会将click事件处理程序附加到该类(如果是“ clicker”),因此适用于该类的所有按钮。

答案 2 :(得分:0)

因为内部函数this中的hello指向window对象。您可以将event参数传递给hello之类的onclick="hello(event)"函数,并且在此函数内部,您可以使用event.target.getAttribute('id')来访问此元素的ID,别忘了更改函数定义function hello(){...}function hello(event){...}