【问题标题】:Jquery/Ajax form loses the hidden field values on second clickJquery/Ajax 表单在第二次单击时丢失隐藏字段值
【发布时间】:2014-11-15 17:33:48
【问题描述】:

我有一个包含一些隐藏字段的表单,并且值是在页面加载时设置的。我有一个 Ajax 脚本,它通过单击按钮提交表单。当我单击该按钮时,它会提交表单,并且在某些数据库检查后会向客户端发送一封电子邮件。我收到一条消息,告诉我提交成功,并且在第一次提交之前隐藏字段的值如下所示:

<input type="hidden" name="propertyID" id="propertyID" value="1" />
<input type="hidden" name="uyeID" id="uyeID" value="10" />
<input type="hidden" name="referrerfile" id="referrerfile" value="Property For Sale" />

提交后浏览器调试器上的值如下:

<input type="hidden" name="propertyID" id="propertyID" value="">
<input type="hidden" name="uyeID" id="uyeID" value="">
<input type="hidden" name="referrerfile" id="referrerfile" value="">

我不明白可能的原因是什么,但它无法进行数据库检查和发送电子邮件,因为这些字段没有价值。

这是我点击按钮时的 Ajax 脚本:

if(proceed) 
    {
        //data to be sent to server
        post_data = {'userName':user_name, 'userEmail':user_email, 'userPhone':user_phone, 'userMessage':user_message, 'imageverification':imageverification, 'propertyID':propertyID, 'uyeID':uyeID, 'referrerfile':referrerfile,  'departuredate':departuredate, 'arrivaldate':arrivaldate };

        //Ajax post data to server
        $.post('owner_contact.php', post_data, function(response){  

            //load json data from server and output message     
            if(response.type == 'error')
            {
                output = '<div class="error">'+response.text+'</div>';
                refresh_image();
            }
            else
            {
                output = '<div class="success">'+response.text+'</div>';

                //reset values in all input fields
                $('#contact_form input').val(''); 
                $('#contact_form textarea').val(''); 
            }

            $("#result5").hide().html(output).slideDown();
        }, 'json');

    } else {
        //$("#result").slideDown();
        refresh_image();
    }
});

知道问题出在哪里吗?

【问题讨论】:

  • #contact_form 是什么?是“表单”ID吗?
  • 部分在所有输入字段中重置值怎么样?隐藏的输入也是输入。

标签: jquery ajax forms submit


【解决方案1】:

我认为您的代码中的$('#contact_form input').val(''); 只是重置所有输入的值,包括隐藏字段。不用这个试试。

【讨论】:

  • 是的,我的错。我用它来清理输入的表单值。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 1970-01-01
相关资源
最近更新 更多