jQuery序列化具有多个值的函数

时间:2014-04-09 06:43:51

标签: javascript php jquery

我尝试使用jQuery将多个值发布到PHP页面,然后将这些值用作单个值。

我从Jquery站点的代码开始:

  <form ><br>
  <select name="multiple" multiple="multiple">
   <option selected="selected">Multiple</option>
   <option>Multiple2</option>
   <option selected="selected">Multiple3</option>
  </select>

  <br>

 <br>

 </form>

 <p><tt id="results"></tt></p>

  <script>
     function showValues() {
     var str = $( "form" ).serialize();
     $( "#results" ).text( str );
                            }
    $( "input[type='checkbox'], input[type='radio']" ).on( "click", showValues );
    $( "select" ).on( "change", showValues );
   showValues();
    </script>

结果是:multiple=Multiple&multiple=Multiple2,没关系。

现在mycproblem是如何将这些值发布到test.php页面,然后使用唯一值,如下所示:

$multiple=[first value]
$multiple2=[second value]
etc...

2 个答案:

答案 0 :(得分:2)

将表单中的multiple更改为multiple[]。这会将您的值提交为多个[] =第一个值,多个[] =第二个值等等。

jQuery的,

$('form').on('submit', function(e)
{
  e.preventDefault();
  formData=$('form').serialize();
    $.ajax(
    {
        type: "POST",
        url: "test.php",
        data: formData,
        success: function(data)
        {
            alert("Form submitted");
        },
        error: function()
        {
            alert("Error in form submission");
        }
    });
});

在PHP端,

$multiple=$_POST['multiple']; // Get the array input

现在分别继续使用值

foreach($multiple as $key => $value)
{
echo "value number $key is $value"; // This will print as value number 0 is 1st value, value number 1 is 2nd value and more.
}

答案 1 :(得分:0)

您必须使用AJAX将表单发布到test.php。试试这个 -

$("form").on('submit', function(ev){

    ev.preventDefault();
    var form = $(this);
    var action = 'test.php';
    var data = $(this).serialize();

    $.post(action, data)
    .done(function(response){

        if(response.success == false)
        {
            // If failed
        }
        else
        {
            // If successfully submitted
        }
    });
});

另一方面(test.php),你会得到一个像这样的多个值的数组,

$multiple1 = $_POST['multiple']['0'];
$multiple2 = $_POST['multiple']['1'];