Ajax serialize()方法不读取html表单的所有数据字段
我正在尝试使用jquery get()方法发送我的网页的表单数据。 但是当我提交表单时,只有少数字段数据发送到服务器。
形成:
JavaSccript:
$('#addpost').submit(function(e){ if(use_ajax) { $('#loading').css('visibility','visible'); $.get('test.php',$(this).serialize(), function(data){ if(parseInt(data)==-1) $.validationEngine.buildPrompt("#resp","* Please ensure all fields are filled.","error"); else { $("#resp").show('slow').after('Success....
'); } $('#loading').css('visibility','hidden'); setTimeout( "jQuery('#resp').hide('slow');",3000 ); setTimeout( "jQuery('#resp-mes').hide('slow');",5000 ); }); } e.preventDefault(); } )};
在此仅发送到服务器的3个字段值。 那是后标题,后内容和标签我不知道为什么会发生这种情况。 任何帮助,将不胜感激。
你有两个问题。
-
Ajax和序列化上载不适用于文件上载。 ( 阅读此问题并回答异步上传 )
-
jquery表单序列化需要一个name属性。 您的选择框(
form-field-select-3
)没有name属性。
以下是jquery序列化文档页面中的注释 –
注意:只有“ 成功控件 ”序列化为字符串。 没有提交按钮值被序列化,因为表单未使用按钮提交。 要使表单元素的值包含在序列化字符串中,该元素必须具有name属性。 复选框和单选按钮(“radio”或“checkbox”类型的输入)中的值仅在选中时才包括在内。 文件选择元素中的数据未序列化。
这是因为你在select元素中遗漏了“name”属性
我已经在当地检查了,现在这个工作正常。
如果有任何问题,请检查并告诉我。
谢谢
我看到attrbute name=""
是必需的,一些输入元素缺少那些。 所以你可以尝试放置这个属性,看看这是否解决了这个问题:
确定整个表格,如果所有四个元素都是从高于零的索引中填充/选择的话,则只能发送四个元素;
有这些名字的人;
“标签”
“文件格式”
“内容后”
“post标题”
这是因为这些是唯一定义了name属性的标记。
请将要发布的所有元素提供给服务器一个名称属性,其中包含您要用来访问它们的post索引。