0

我在 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);

?

谢谢。

4

2 回答 2

0

我发现问题在于 ajax 正在使用异步(应该如此)。

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

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

$.ajaxSetup({
        async: false
    });

在我的ajax调用之后

$.ajaxSetup({
        async: true
    });

它工作得很好。

于 2013-02-22T13:09:24.127 回答
0

(以下评论)

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

  1. 将您的表单内容发送到服务器,并带有正确的refNumber,
  2. 在服务器端,调用getProd.php(或其中编码的任何函数)以获取正确的productID,
  3. 继续正确productID

它将从客户那里节省一个额外的来回。

于 2013-02-22T13:09:49.743 回答