Ajax serialize()方法不读取html表单的所有数据字段

我正在尝试使用jquery get()方法发送我的网页的表单数据。 但是当我提交表单时,只有少数字段数据发送到服务器。

形成:

Blog News Letter
loading

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个字段值。 那是后标题,后内容和标签我不知道为什么会发生这种情况。 任何帮助,将不胜感激。

你有两个问题。

  1. Ajax和序列化上载不适用于文件上载。 ( 阅读此问题并回答异步上传 )

  2. jquery表单序列化需要一个name属性。 您的选择框( form-field-select-3 )没有name属性。

以下是jquery序列化文档页面中的注释 –

注意:只有“ 成功控件 ”序列化为字符串。 没有提交按钮值被序列化,因为表单未使用按钮提交。 要使表单元素的值包含在序列化字符串中,该元素必须具有name属性。 复选框和单选按钮(“radio”或“checkbox”类型的输入)中的值仅在选中时才包括在内。 文件选择元素中的数据未序列化。

这是因为你在select元素中遗漏了“name”属性

我已经在当地检查了,现在这个工作正常。

如果有任何问题,请检查并告诉我。

谢谢

我看到attrbute name=""是必需的,一些输入元素缺少那些。 所以你可以尝试放置这个属性,看看这是否解决了这个问题:

   

确定整个表格,如果所有四个元素都是从高于零的索引中填充/选择的话,则只能发送四个元素;
有这些名字的人;
“标签”
“文件格式”
“内容后”
“post标题”

这是因为这些是唯一定义了name属性的标记。
请将要发布的所有元素提供给服务器一个名称属性,其中包含您要用来访问它们的post索引。