ajaxForm在提交表单后更改值

时间:2013-02-22 12:40:51

标签: jquery ajaxform

我在jquery中有以下代码,它应该在提交表单时更新隐藏字段,并使用新值处理表单。

$("#" + id).ajaxForm({
    beforeSubmit: function() {
        $("#" + id + " input[type=submit]").attr('disabled', true);
        $("#" + id + " img.loader").show();

        $.get('/getProd.php?refNumber='+$("#" + id + " input[name='refNumber']").val(), function (data) {
            $("#" + id + " input[name='productID']").val(data);
        });
        alert("done pre");
    },  
    success: function(resp) {
        $("#" + id + " input[type=submit]").attr('disabled', false);
        $("#" + id + " img.loader").hide();
        resp = eval('(' + resp + ')');
        ccm_parseJSON(resp, function() {
            alert('done');
        });
    }
});

我的问题是正在使用的提交值是旧值。如何成功使用我用行

插入的新值
$("#" + id + " input[name='productID']").val(data);

感谢。

2 个答案:

答案 0 :(得分:0)

我发现问题是ajax正在使用async(应该如此)。

它基本上是在函数完成后完成对服务器的查询。

所以,我在我的ajax调用之前设置了

$.ajaxSetup({
        async: false
    });

在我的ajax电话之后

$.ajaxSetup({
        async: true
    });

它运作得很好。

答案 1 :(得分:0)

(以下评论)

这就是我的意思:你为什么不

  1. 使用正确的refNumber
  2. 将表单内容发送到服务器
  3. 在服务器端,调用getProd.php(或其中编码的任何函数)以获取正确的productID
  4. 继续使用正确的productID
  5. 它可以节省一个额外的背部和来自客户。