用链接调用ajax函数

时间:2014-05-27 08:54:33

标签: javascript php jquery ajax joomla

我正在尝试使用以下函数中的以下变量内的所有数据创建一个ajax函数:$item

public function onK2AfterDisplayContent(&$item,&$params,$limitstart)
{
    $view = JRequest::getVar('view');

    if($view === 'item'){
        $db = JFactory::getDbo();
        $query = 'SELECT name FROM #__k2_categories WHERE id='.$item->catid;
        $db->setQuery($query);
        $resultado = $db->loadResult();

        echo '<input class=subscribete type=button id='.$resultado.'-'.$item->id.' value="Subscribete" />'; 
    }
}

我不确定是否应该使用html链接而不是<button>。变量$item是一个包含大量信息的对象,我想把它带到我的AJAX中以便以后处理这些数据......

2 个答案:

答案 0 :(得分:1)

您可以使用锚点或按钮元素,这取决于您的要求。用户总是期望在点击锚点后将网页指向另一个页面或弹出一些内容并在单击按钮后触发一个动作(表单提交,显示/隐藏内容......等)。请注意,您应该在click事件处理程序中调用event.preventDefault(),以避免在将anchor元素用作AJAX调用者时向URL添加不必要的“#”。

然后,您需要使用PHP中的自定义数据属性将AJAX调用所需数据存储到DOM。 (假设您只需要$ item的ID)

public function onK2AfterDisplayContent(&$item,&$params,$limitstart)
{
  $view = JRequest::getVar('view');

  if($view === 'item'){
    $db = JFactory::getDbo();
    $query = 'SELECT name FROM #__k2_categories WHERE id='.$item->catid;
    $db->setQuery($query);
    $resultado = $db->loadResult();

    //add required data to DOM
    echo '<input class="subscribete" type="button" id="'.$resultado.'-'.$item->id.'" value="Subscribete" data-id="'.$item->id.'"/>'; 
  }
}

最后一步,注册DOM的click事件处理程序,它将触发一个AJAX调用。

$(function(){
  $(".subscribete").click(function(e){
    if(this.tagName==="A"){
      e.preventDefault();
    }

    //$(this).data("key") will return the value at the named data which is set by HTML5 data-* attribute
    $.ajax({
      url: "http://path.to.ur/url",
      type: "POST",
      data: {id:$(this).data("id")},
      success: function(response){
        alert(response);
      },
      error: function(jqXhr,status,error){
        alert(error);
      }  
    });
  });
});

答案 1 :(得分:0)

是的,您可以通过以下方式使用该链接: - 您可以在链接上编写

  <a href="#" onclick="function()">...</a>