【问题标题】:Trying to pass data from an <a> tag, with onclick function through post() method尝试从 <a> 标记传递数据,通过 post() 方法使用 onclick 函数
【发布时间】:2019-09-23 07:11:52
【问题描述】:

当我单击&lt;a&gt; 标记时,我想将一些数据传送到 php 页面。 html 是用 jquery 生成的,因此初始文件是 .js。

我在这里尝试使用 post() 方法,但它不起作用。函数(数据,状态)没有响应。

我在&lt;a&gt;中应用了一些额外的数据:

<a href="http://path" data-value = "89"></a>

然后我尝试在点击函数中使用 post(),例如:

jQuery(function ($) {
$('a').click(function(){
    var num = $(this).data("value");
    $.post("products.php",{
        cat_num: num
    },function(data,status){
        $("#test_id").html(data);
    });
});

});

【问题讨论】:

  • 请求可能无效 - 检查您的网络选项卡/添加错误处理程序
  • 一个问题是$("test_id") 应该是$("#test_id")$(".test_id")
  • 是的,那是#test_id,但这是一个小问题。
  • 能否调试在 DevTools 或主机上发送的 POST 请求?
  • 是的,但我找不到任何错误....

标签: jquery ajax post


【解决方案1】:

我看到两个可能的问题:

  1. html是用jquery生成的

    因此,当您添加点击处理程序时,该链接可能还不存在。

  2. 您没有停止链接的默认行为。因此,您可能只是在发布请求触发之前关注该链接。

尝试委派事件处理程序并使用preventDefault()

jQuery(function ($) {
  $('body').on('click','a', function(e){
    e.preventDefault();
    var num = $(this).data("value");
    $.post("products.php",{
        cat_num: num
    },function(data,status){
        $("#test_id").html(data);
    });
  });
});

【讨论】:

  • 感谢您的洞察力。我设法得到了错误。它说它不识别 $post()。 (s.post 不是函数)。
  • @EmmanuelRichman 在这种情况下首先执行此操作:stackoverflow.com/a/38793829/6127393
  • 好的,再次感谢。现在我更近了一步,但我收到了一个 POST localhost/"filepath"/products.php 404(Not Found)....
  • 检查您的路由,该操作是否接受 POST 方法?
  • 我修复了我的路由并且我拥有正确的数据,但是在函数结束时停止 preventDefault() 以重新激活链接的最佳方法是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 2011-04-26
  • 1970-01-01
相关资源
最近更新 更多