0

看来我在使用 jQuery ajax 表单时遇到了问题,尽管表单字段似乎是空的,但它一直发送相同的值。因此我假设 jQuery 是“缓存”或不覆盖我定义的变量。

function payment(projectID, billID)
{
    $.ajax
    ({
        url: 'modules/projects/projectFinancial.php?action=paymentDetails&projectID=' + projectID + '&billID=' + billID + '&rand=' + Math.random(),
        dataType: 'html',
        async: false,
        success: function(msg)
        {
            $("#paymentDetails").html(msg);
        }
    });

    $("#payment").dialog(
    {
        width: 500,
        height: 300,
        modal: true,
        buttons: 
        {
            Save: function()
            {
                var paymentAmount = $("#PaymentAmount").val();
                var paymentMethod = $("#PaymentMethod").val();
                var paymentRemarks = $("#PaymentRemarks").val();

                if ($('#PaymentDone').is(':checked'))
                {
                    var paymentDone = 1;
                }
                else
                {
                    var paymentDone = 0;
                }

                $.ajax
                ({
                    url: 'modules/projects/projectFinancial.php?action=payment&projectID=' + projectID + '&billID=' + billID + '&paymentAmount=' + paymentAmount + '&paymentMethod=' + paymentMethod + '&paymentRemarks=' + paymentRemarks + '&paymentDone=' + paymentDone + '&rand=' + Math.random(),
                    dataType: 'html',
                    async: false,
                    success: function(msg)
                    {
                        if (msg != "error")
                        {
                            showFinancial(msg, '{/literal}{$marginCalculated}{literal}');
                        }
                    }
                });

                $(this).dialog("close");
            }
        }
    });
}
4

1 回答 1

0

尝试使用下面的代码完全关闭缓存。此外,您应该使用POST方法来更改服务器上的某些内容(付款似乎是这样的操作)。

$(function() {
    $.ajaxSetup({ cache: false });
});

另一个想法:确保第二次单击保存时,#PaymentAmount指的是第二个对话框中的输入字段。在动态加载的内容中使用 ID 是有风险的,因为如果您多次加载相同的内容,您很容易得到重复的 ID。

$(this).dialog("close")实际上并没有从 DOM 中删除旧对话框。
尝试$(this).dialog("destroy")改用。

于 2013-11-04T11:59:47.593 回答