jQuery ajax对话框不断发送相同的值

时间:2013-11-04 11:54:52

标签: php jquery ajax smarty

似乎我遇到了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");
            }
        }
    });
}

1 个答案:

答案 0 :(得分:0)

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

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

另一个想法:确保第二次点击“保存”时,#PaymentAmount引用第二个对话框中的输入字段。在动态加载的内容中使用ID是有风险的,因为如果您多次加载相同的内容,就可以轻松地获得重复的ID。

$(this).dialog("close")实际上并未从DOM中删除旧对话框 请尝试使用$(this).dialog("destroy")