Jquery ajaxForm在提交表单后更改值

Jquery ajaxForm在提交表单后更改值,jquery,ajaxform,Jquery,Ajaxform,我在jquery中有以下代码,它应该在提交表单时更新一个隐藏字段,并使用新值处理表单 $("#" + id).ajaxForm({ beforeSubmit: function() { $("#" + id + " input[type=submit]").attr('disabled', true); $("#" + id + " img.loader").show(); $.get('/getProd.php?refNumber='+

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


谢谢。

我发现问题在于ajax使用的是异步(这是应该的)

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

因此,我在ajax调用之前设置

$.ajaxSetup({
        async: false
    });
$.ajaxSetup({
        async: true
    });
在我打了ajax电话之后

$.ajaxSetup({
        async: false
    });
$.ajaxSetup({
        async: true
    });
而且效果很好。

(以下评论)

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

  • 使用正确的
    refNumber
    ,将表单内容发送到服务器
  • 在服务器端,调用
    getProd.php
    (或其中编码的任何函数)以获得正确的
    productID
  • 继续使用正确的
    产品ID

  • 这将为客户节省一个额外的往返时间。

    问题:从我所读到的,您不需要
    productID
    来识别产品,您只需要
    refNumber
    。为什么不改变服务器端的处理方式以考虑到
    refNumber
    ,而不是
    productID
    ?我需要productID,getProd.php页面会将refNumber转换为productID。它需要在服务器端运行我管理,看看下面我的答案,这是行不通的,因为我无法修改使用productId的脚本以使用refNumber。我基本上把它送到两个不同的地方。我解决了我的问题,看看上面。谢谢你有额外的限制。好啊