输入按钮不使用AJAX提交

时间:2015-05-19 20:44:12

标签: php ajax html5

php我有以下代码

<form id="one" method="POST" action="#">

<input type="text" name="rfc" />

<button type="submit" name="selection" value="1">Option 1 </button>
<button type="submit" name="selection" value="2">Option 2 </button>
<input type="submit" name="selection" value="4" />

</form>

<section id="new_section"></section>
      <script>
        $('#one').submit(function(event){
          var data = $(this).serialize();
          $.post('two.php', data)
          .success(function(result){
              $('#new_section').html(result);
          })
          .error(function(){
              console.log('Error loading page');
          })
          return false;
        });
      </script>

在two.php中,我验证了rfc和选择字段的值

two.php

print_r($_POST);

print_r只显示rfc但不显示选择,输出如下:

  

数组([rfc] =&gt; WIRK510828)

这是因为动作=#?

而发生的

1 个答案:

答案 0 :(得分:0)

这是因为你应该单独传递按钮的值,因为serialize()没有取按钮值。

首先,您要为每个按钮添加ID和ID 使用serializeArray();代替serialize()

在你的html上做这样的事情,它起作用我只是测试了它:

<form id="one" method="POST" action="#">

    <input type="text" name="rfc" />

    <button type="submit" id="button1" name="selection" value="1">Option 1 </button>
    <button type="submit" id="button2" name="selection" value="2">Option 2 </button>
    <button type="submit" id="button4" name="selection" value="4">option 4</button>

</form>
<section id="new_section"></section>


<script>
var frm = $('#one');
var data = frm.serializeArray();
$('#button1, #button2, #button4').on("click",function(e) {
e.preventDefault();

frm.submit(function(event){
  $.post('two.php', data)
  .success(function(result){
      $('#new_section').html(result);
  })
  .error(function(){
      console.log('Error loading page');
  })
  return false;
});
data.push({name: encodeURI($(this).attr('name')), value: encodeURI($(this).attr('value'))});
frm.submit();
data.pop();
});
</script>

<强>解释 我使用data.push();将extradata(按钮值)推送到serializeArray();,然后使用frm.submit()发送表单,最后data.pop()清除数组以供将来使用。我还添加了一些变量以便更好地实现。