使用非标准POST数据格式提交表单

时间:2015-01-20 10:55:32

标签: php html forms post

我有一个嵌入在PHP页面中的标准HTML表单,该表单发布到由第三方托管和管理的外部Job Application API。问题是他们的表单并不像往常一样期望加载$ _POST参数,而是想要一个$ _POST参数(' params')采用以下格式:

params="Prop2:title;Prop4:lastname;Prop6:firstname;"

等等 - 那里有大约30个领域。

如何获取表单输入并转换为单个长字符串?这是否需要在提交和发布之间采取某种形式的中间步骤(在这种情况下,我将如何进入中间步骤?)或者我在这里缺少更基本的东西?

下面的示例表单使用测试textarea输入,并且预先提交了所需的参数,但显然忽略了实际的名字姓氏输入。

<form id="#applicationForm" method="POST" action="https://www.example.com/eternal-api">

  <input id="lastname" name="lastname" type="text" placeholder="Last name (Required)" class="input-xlarge" required="">
  <input id="firstname" name="firstname" type="text" placeholder="First Name (Required)" class="input-xlarge" required="">
  <textarea name="params" rows="2" cols="150">Prop4:Test_lastname;Prop6:test_firstname;</textarea>
  <input type="submit" value="Submit Application" class="btn btn-success">

</form>

为了混淆问题,一些输入是上传字段,但我会担心下一个!

3 个答案:

答案 0 :(得分:1)

您可以使用javascript预处理表单数据,然后通过Ajax将其发布到他们的URL。获取数据:

params="firstname:"+$("#firstname").val() + "; lastname: " + ....

发布它,你可以使用ajax POST ..

$.Post(url, {data})

有关详细信息,请参阅jquery POST文档

答案 1 :(得分:1)

我会尝试一种非常基本的方法:

&#13;
&#13;
$('#applicationForm').submit(function(e) {

  var params = '';

  $(this).find('input, textarea, select').filter('[name]').each(function() {

    if ($(this).is('textarea')) {

      params += $(this).val();
      return;

    }

    params += $(this).attr('name') + ':' + $(this).val() + ';';


  });

  $(this).append($('<input>', {

    type: 'hidden',
    name: 'params',
    value: params

  }));
  

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="applicationForm" method="POST" action="https://www.example.com/eternal-api">

  <input id="lastname" name="lastname" type="text" placeholder="Last name (Required)" class="input-xlarge" required="">
  <input id="firstname" name="firstname" type="text" placeholder="First Name (Required)" class="input-xlarge" required="">
  <textarea name="params" rows="2" cols="150">Prop4:Test_lastname;Prop6:test_firstname;</textarea>
  <input type="submit" value="Submit Application" class="btn btn-success">

</form>
&#13;
&#13;
&#13;

我循环遍历每个元素并收集值。然后我用你的值附加一个隐藏的输入

答案 2 :(得分:0)

是JSON吗? 如果是,请使用jQuery。 jquery ajax doc