1

为什么这段代码不起作用?

与此同时(试图让它工作)我已经改变了它一段时间,但我找不到解决方案。

有人有想法吗?我在控制台中没有错误。

首先,它检查是否需要打开对话框。

这是工作流程:

If DialogRequired => Dialog.Click = OK --> 执行 ajax 调用 If DialogRequired => Dialog.Click = Cancel --> 什么也不做 If Dialog NOT Required => 执行 ajax 调用

$(function () {
    $("a.orderlink").unbind();

    $("a.orderlink").bind("click", function () {
        var ProductID = $(this).parent().attr("data-productid");
        var Ammount = $(this).parent().parent().find("input#ammount").val();

        $.ajax({ type: "post",
            url: $(this).attr("href").replace("AddToCart", "ExistsInCart"),
            data: { ProductId: $(this).parent().attr("data-productid") },
            succes: function (data) {
                if (data == 1) {
                    $("#ProductExistsInOrder").dialog({
                        autoOpen: true,
                        height: 170,
                        width: 400,
                        modal: true,
                        buttons: {
                            "OK": function () {
                                /*acties om toe te voegen $.ajax()*/
                                $.ajax({ type: "post",
                                    url: $(this).attr("href"),
                                    data: { ProductId: ProductID, Ammount: Ammount },
                                    succes: function () {
                                        $("#AddProductNotification").text("U heeft net een product toegevoegd. Herlaad de pagina om uw winkelwagentje te bekijken");
                                    }
                                });
                                setTimeout("location.reload(true);", 100);
                                $(this).dialog("close");
                                location.reload(true);
                            //    return false;
                            },
                            "Annuleer": function () {
                                $(this).dialog("close");
                             //   return false;
                            }
                        }
                    });
                } else {
                    $.ajax({ type: "post",
                        url: $(this).attr("href"),
                        data: { ProductId: ProductID, Ammount: Ammount },
                        succes: function () {
                            $("#AddProductNotification").text("U heeft net een product toegevoegd. Herlaad de pagina om uw winkelwagentje te bekijken");
                        }
                    });


                };
                // $("#AddProductNotification").text("U heeft net een product toegevoegd. Herlaad de pagina om uw winkelwagentje te bekijken");
            },
            error: function (XMLHeeptRequest, textStatus, errorThrown) {
                alert(textStatus);
                alert(errorThrown);
            }
        });
        // alert("end");
        //  AddToCart(this);
        return false;
    });
   // return false;
});
// ProductId: $(orderlinkObject).parent().attr("data-productid"), Ammount: $(orderlinkObject).parent().parent().find("input#ammount").val()   

事情是这样的:

  • 被调用 (=ok) : /Cart/ExistsInCart 带有参数:产品 ID 并在 jSon 中返回 true
  • 但是没有调用对话框,我似乎无法用 firebug 更新它。
4

1 回答 1

0

看起来你的范围有问题。

在 ajax 成功中,您有很多$(this).attr("href")匿名函数。在那些功能this != "a.orderlink"中。

您将希望var that = $(this)在单击处理程序的顶部进行操作,然后使用that.attr("href").

示例:http: //jsbin.com/ivoniv/edit#javascript

于 2012-01-19T16:29:59.163 回答