Jquery通过ajax将两个数组数据传递给php并提取两个前缀

时间:2016-01-25 02:18:37

标签: php jquery ajax

我想将两个数组数据传递给php,然后用两个前缀提取它们,这样我就可以通过这两个前缀来选择它们。

示例代码

HTML

<form>
  <!-- set one -->
  <div class="one">
    <input id="name" name="name">
  </div>
  <!-- /set one -->

  <!-- set two -->
  <div class="two">
    <input id="email" name="email">
  </div>
  <!-- /set two -->

  <!-- set one again -->
  <div class="one">
    <input id="msg" name="msg">
  </div>
  <!-- /set one -->

  <button type="submit"></button>
</form>

Jquery的

我不知道如何传递set one并在数据中设置两个,它应该通过两个数组吗?我想按父类onetwo选择它们。

  $('form').on('submit', function(e) {
    e.preventDefault();

  $.ajax({
      type: 'POST',
      url: 'contact.php',
      data: $('form').serialize(),
      success: function(data) {
        console.log(data);
      },
      error: function(data) {
        console.log(data);
      }
    });
  });

PHP

<?php
  extract($_POST, EXTR_PREFIX_ALL, 'one'); // how to extract only set one?
  extract($_POST, EXTR_PREFIX_ALL, 'two'); // how to extract only set two?
>

我想在php中使用它们:

if (empty($one_name) || empty($two_email) || empty($one_msg)) { // select them by prefix
  // function
}

html不能包含php代码,如何使用jquery和php做到这一点?

感谢。

2 个答案:

答案 0 :(得分:2)

在表单控件上使用数组名称

<div class="one">
    <input id="name_1" name="one[name]">
  </div>
  <!-- /set one -->

  <!-- set two -->
  <div class="two">
    <input id="email_2" name="two[email]">
  </div>

 <!-- set one again -->
  <div class="one">
    <input id="msg" name="one[msg]">
  </div>

您的serialize()方法无需更改

在php中接收

$data_one  = $_POST['one'];    
echo $data_one['name'];

答案 1 :(得分:1)

这比查理的答案简单得多,但你也可以这样做 - 如果你可以避免使用.serialize()

$('form').on('submit', function(e) {
    e.preventDefault();

    var one_name = $('.one #name').val();
    var two_email = $('.two #email').val();
    var one_msg = $('.one #msg').val();

    $.ajax({
        type: 'POST',
        url: 'contact.php',
        data: 'one_name=' +one_name+ '&two_email=' +two_email+ '&one_msg=' +one_msg,
        success: function(data) {
            console.log(data);
        },
        error: function(data) {
            console.log(data);
        }
    });
});

<强> PHP:

<?php
    $one_name = $_POST['one_name'];
    $two_email = $_POST['two_email'];
    $one_msg = $_POST['one_msg'];