为什么这个Ajax条件对话框不起作用?

时间:2012-01-19 16:21:30

标签: javascript jquery ajax client-side-scripting

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

与此同时(尝试使其工作)我已经改变了它的时间,但我找不到解决方案。

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

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

这是工作流程:

如果DialogRequired => Dialog.Click = OK - >执行ajax调用 如果DialogRequired => Dialog.Click =取消 - >没做什么 如果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,带参数:product ID并在jSon中返回true
  • 但是没有调用对话框,我似乎无法用firebug更新它。

1 个答案:

答案 0 :(得分:0)

看起来您的示波器出现问题。

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

您需要在点击处理程序的顶部执行var that = $(this),然后使用that.attr("href")

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