【问题标题】:Jquery - POST, success callback is not getting executedJquery - POST,未执行成功回调
【发布时间】:2015-12-29 11:28:51
【问题描述】:

我正在使用以下 Jquery 代码将商品添加到购物车。我的意图是在 Ajax 调用成功后更改“添加到购物车”按钮。然而它没有发生。代码如下 -

  jQuery.post('/cart/add.js', {
              quantity: 1,
              id: variant_id
  }, function(data){
    var myelem = document.getElementById('red') ;
    if (myelem != null){
      document.getElementById('red').id = 'normal';
    }
    $("span").removeClass("hidden-count");
    $(".cart-count").text('1');
    $("#AddToCartText").text("Added");
    $("#AddToCart").css("color","Green");

  });

目前,代码正在将商品添加到购物车,但我没有看到预期的元素操作。 操作元素的 jquery 是正确的,因为当我将它从成功回调中删除,并将其放在 AJAX 调用之后(不依赖于 AJAX 调用),在这种情况下,元素正在被操作。

  1. 我已参考http://api.jquery.com/jquery.post/ 来验证语法。
  2. 我在开发者工具 (Chrome) 中检查了“控制台”,那里没有错误消息。

请告诉我,我在哪里犯了错误。

【问题讨论】:

  • 检查浏览器控制台中的网络选项卡并确保您的请求已正确发布...
  • @Guruprasad,我也检查了网络选项卡。我收到了来自服务器的有效响应。
  • 你能提供一些额外的信息,比如页面的html吗?既然您想操作有用的 DOM。

标签: jquery ajax shopify


【解决方案1】:

这适用于我的购物车。注意第四个参数。 id 是变体 id:

jQuery.post('/cart/add.js', {id:6028354753}, function(data){
  console.log(data);
},'json');

【讨论】:

  • 感谢它的工作。但是我确实有疑问,在 Jquery 文档中,它说第四个参数不是必需的。显然是的。是否有任何关于 shopify 的文档可供我参考,其中列出了所需的参数。
  • 第 4 个参数是必需的,因为在这种情况下,jQuery 将 Shopify 的响应解释为 html 而不是 JSON
【解决方案2】:

您是否尝试在回调函数中添加一些console.log?也许代码正在执行,但没有做它应该做的事情。

也检查variant_id 的值。

【讨论】:

  • 我已尝试使用 console.log 和 Alert。我既没有收到日志消息,也没有收到警报。
【解决方案3】:

如果成功,您必须将 .done 回调添加到您的函数中,您不喜欢下面的示例。这就是为什么你没有得到想要的 DOM 操作。

 $.post( "test.php", { name: "John", time: "2pm" })
  .done(function( data ) {
  alert( "Data Loaded: " + data );
 }); 

【讨论】:

  • 即使添加 .done 也不起作用。此外,jquery 文档没有说明 .done 是必需的。下面是 Jquery 站点的示例 - $.post( "test.php", function( data ) { alert( "Data Loaded: " + data ); });
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 2013-07-15
  • 2011-08-05
相关资源
最近更新 更多