【问题标题】:ajaxForm change value after submit form提交表单后ajaxForm更改值
【发布时间】:2013-02-22 12:40:50
【问题描述】:

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

?

谢谢。

【问题讨论】:

  • 问题:根据我的阅读,您不需要productID 来识别产品,您只需要refNumber。你为什么不改变你的服务器端处理来考虑refNumber,而不是productID
  • 我需要 productId,getProd.php 页面为我将 refNumber 转换为 productId。它需要在服务器端运行
  • 我做到了,看看下面我的回答

标签: jquery ajaxform


【解决方案1】:

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

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

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

$.ajaxSetup({
        async: false
    });

在我的 ajax 调用之后

$.ajaxSetup({
        async: true
    });

而且效果很好。

【讨论】:

    【解决方案2】:

    (以下评论)

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

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

    这会从客户那里节省一个额外的来回。

    【讨论】:

    • 那行不通,因为我无法修改使用 productId 的脚本来使用 refNumber。我基本上将它发送到两个不同的位置。我解决了我的问题,看看上面。谢谢!
    • 你有额外的限制。好的