2015-12-29 48 views
0

我正在使用下面的JQuery代码添加项目到购物车。我的意图是在Ajax调用成功后更改“添加到购物车”按钮。然而它没有发生。代码如下 -Jquery - POST,成功回调没有得到执行

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)中选中了“控制台”,那里没有错误消息。

请让我知道,我在哪里犯错。

+0

检查网络选项卡浏览器控制台,并确保您的请求被正确地张贴... –

+0

@Guruprasad,我检查网络选项卡为好。我从服务器获得有效的回复。 –

+0

你能否提供一些额外的信息,例如页面的html?既然你想操纵那些有用的DOM。 –

回答

2

这可以在我的购物车中使用。注意第四个参数。 id是变种ID:

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

感谢它的工作。不过,我有问题,在Jquery文档中,它说第四个参数不是必需的。显然是这样。有没有关于shopify的任何文档,我可以参考哪些列出了所需的参数。 –

+0

第4个参数是必需的,因为在这种情况下,jQuery将Shopify的响应解释为html而不是JSON – bknights

0

您是否试图在回调函数中放置一些console.log?也许代码正在执行,但没有做到应有的。

检查variant_id的值。

+0

我尝试过使用console.log和Alert。我也没有得到日志消息和警报。 –

0

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

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

甚至添加.done不起作用。而且,jquery文档并没有说明.done是必需的。下面是Jquery站点的示例 - $ .post(“test.php”,function(data){ alert(“Data Loaded:”+ data); }); –