0
$(document).on("click", "#subtotal", function() {       
    var total_price=0;                                        
    for (i=1; i<= clicks; i++) {
        var element = parseFloat($("#total_price_"+i).html());
        total_price += parseFloat(element);
        var brand_code = $("#brand_"+i).val();
        var price = $("#price_"+i).html();
        var quantity = $("#quantity_"+i).html();
        if (element >=1 ) {
        total_price 
        $("#total").html(total_price);
            $.ajax({
                    type: "POST",
                    url: "modules/query_jquery/product_select.php",
                   data: {"new_invoice": "new_invoice", "brand_code": brand_code, "price" : price, "quantity" : quantity , "total_price" : total_price},
                   dataType: 'json',
                   success: function (data) {
                      message = data.message;
                      window.location.href = data.url;
                    }
            });

        }

    }
    alert(message);
});

我正在尝试提醒消息,但它没有定义??ajax jquery下定义的变量message不能定义?!!!

4

3 回答 3

0

尝试在 Ajax 完成后执行警报:

  success: function (data) {
      message = data.message;
      window.location.href = data.url;
      test();
  }

  function test() {
      if (window.message) {
          alert(message);
      } else {
          alert("global message was not populated");
      }
  }
于 2012-12-17T12:23:20.520 回答
0

AJAX 请求是异步的!

调用 alert 时,HTTP 请求尚未返回。

利用

  • 异步标志(http://api.jquery.com/jQuery.ajax/)
  • 推迟通话
  • 从您的成功方法中调用该方法

延迟 ajax 请求的示例:

        $(function () {
            var req1 = $.get('test1.json').success(function (data) {
                $('body').append(data.hallo);
            });
            var req2 = $.get('test2.json').success(function (data) {
                $('body').append(data.welt);
            });

            $.when(req1, req2).done(function () {
                $('body').append('<br />ajax completed');
            }).fail(function () {
                $('body').append('<br />ajax failed');
            });
        });
于 2012-12-17T12:24:29.257 回答
0

如前所述,因为您在 ajax 成功函数中定义全局变量,这意味着如果这不成功,则该变量将不存在供您调用。

所以message在 ajax 调用之前定义是安全的:

message = null;

$(document).on("click", "#subtotal", function() {       
var total_price=0;                                        
for (i=1; i<= clicks; i++) {
    var element = parseFloat($("#total_price_"+i).html());
    total_price += parseFloat(element);
    var brand_code = $("#brand_"+i).val();
    var price = $("#price_"+i).html();
    var quantity = $("#quantity_"+i).html();
    if (element >=1 ) {
    total_price 
    $("#total").html(total_price);
        $.ajax({
                type: "POST",
                url: "modules/query_jquery/product_select.php",
               data: {"new_invoice": "new_invoice", "brand_code": brand_code, "price" : price, "quantity" : quantity , "total_price" : total_price},
               dataType: 'json',
               success: function (data) {
                  message = data.message;
                  window.location.href = data.url;
                }
        });

    }

}
alert(message);
});
于 2012-12-17T12:25:45.093 回答