【问题标题】:Text box value not geting after ajax callajax调用后文本框值未获取
【发布时间】:2026-02-05 17:10:02
【问题描述】:

我有一个带有两个表单的 php 页面。在第一个表单中,有一个按钮,按钮的 onclick() 调用一个函数来验证第一个表单。如果验证全部完成了else 部分函数如下:

else
            {
                var cnt=$("#frmdocontact").serialize();
                $.ajax({  
                type: "POST",  
                url: "doitcontact.php",
                data: cnt,
                success: function(msg){
                var spt=msg.split('#$@$');
                $('#hid_uid').val(spt[0]);
                $('#hid_add_vehicle').val(spt[0]);
                $('#hid_saleid').val(spt[1]);

                //alert(msg);
            //console.log(contactSent);
            var pkg = $('input:radio[name=pkg]:checked').val();

            var $tabs = $('#tabs').tabs();
            var selected = $tabs.tabs('option', 'selected');
            $tabs.tabs('select', selected+1);
                //window.location="thankyou.php"
                }
                });

            }

在 else 部分工作后,hd_saleid 的值为 OFKXMhd_saleid 是第二种形式。

在第二种形式中,有文件上传部分,这是通过使用 ajax 上传完成的。但是在那个 ajax 上传功能中,hd_saleid 值没有得到。这是代码:

$(function(){
        var cntUp = 0;
        var btnUpload=$('#upload');
        var status=$('#status');
        var saleid = $("#hd_saleid").val();
        new AjaxUpload(btnUpload, {
            action: 'upload-file.php',
            data: {saleid: $("#hd_saleid").val()},
            name: 'uploadfile',
            onSubmit: function(file, ext){
                 if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){ 
                    // extension is not allowed 
                    alert('Only JPG, PNG or GIF files are allowed');
                    return false;
                }
                status.text('Uploading...');
            },
            onComplete: function(file, response){
                //On completion clear the status
                status.text('image uploaded');
                cntUp++;
                //console.log(cntUp);
                //Add uploaded file to list
                if (response.toLowerCase().indexOf("success") >= 0 ) {
                //alert('success');
                //$('<li></li>').appendTo('#files').html('<img src="uploads/'+file+'" alt="" /><br />'+file).addClass('success');

                if(saleid){
                        $('<li></li>').appendTo('#files').html('<img src="uploads/'+saleid+'/'+file+'" alt="" /><br />'+file).addClass('success');
                    }else{
                        $('<li></li>').appendTo('#files').html('<img src="uploads/'+file+'" alt="" /><br />'+file).addClass('success');
                    }

                }  else{
                    $('<li></li>').appendTo('#files').text(file).addClass('error');
                    //alert('error');
                }
            }
        });

    });

那么如何在ajax上传中获取hd_saleid的值隐藏字段呢?

【问题讨论】:

  • 你的问题没有意义..我什么都不懂。
  • @Mihai 我现在编辑了这个问题......

标签: php ajax inputbox


【解决方案1】:

是的,你的问题就在这里:

var saleid = $("#hd_saleid").val();

saleid 在 DOM 准备就绪时从 $("#hd_saleid").val() 中获取它的值,所以它在开始时获取他的值,仅此而已。这就是为什么您必须直接在 AJAX 调用中添加 $("#hd_saleid").val()

你可以使用:

onSubmit: function(file, ext){
    if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){ 
        // extension is not allowed 
        alert('Only JPG, PNG or GIF files are allowed');
        return false;
    }
    this.setData({
        'saleid': $("#hd_saleid").val()
    });
    status.text('Uploading...');
},

【讨论】:

  • hd_saleid 的值得到了onSubmit,但是onComplete 上没有,那我怎么才能在onComplete 上得到呢?
  • 同样的事情if($("#hd_saleid").val()){