我如何在PHP中获取javascript动态行值?

时间:2014-02-25 09:14:20

标签: javascript php jquery arrays

jsfiddle

我正在尝试在nextpage(postdata.php)上打印输入文本字段值。但它始终只打印第一行结果。我没有在下一页获得剩余的行值。我在jsfiddle上发布了我的完整代码..如何在php(postdata.php页面)中获取剩余的js动态行值?

JS

$(document).ready(function(){
    $("span").click(function(){
        $("#container").append('<tr><td>Email : </td><td><input type="text" name="email[]" placeholder="Email id" /></td> &nbsp; <td>Name : </td><td><input type="text" name="name[]"  placeholder="Your Name "/></td>&nbsp; <td><a title="Delete this row" href="javascript:void(0);" class="remove">Del</a></td></tr>');
    });
    $("#container").on('click','.remove',function(){
        $(this).parent().parent().remove();
    });
});

<?php
    echo "
    <table>
    <tr>   
        <td>
            Email :
        </td>
        <td>
             $_POST[email]
        </td>
        <td>
            Name :
        </td>
        <td>
             $_POST[name]
        </td>
    </tr>
    </table>";
?>

2 个答案:

答案 0 :(得分:1)

当您在输入字段的名称中添加方括号时,PHP将以数组形式接收它的值。您的JS代码很好,但PHP代码根本不处理数组。请看以下内容:

echo "
<table>";
if(!is_array($_POST['email'])) {
    $_POST['email'] = array($_POST['email']);
    $_POST['name'] = array($_POST['name']);
}

foreach($_POST['email'] as $key => $email) {
    // get the corresponding name to the email
    $name = $_POST['name'][$key];
    echo "<tr>   
        <td>
            Email :
        </td>
        <td>
             $email
        </td>
        <td>
            Name :
        </td>
        <td>
             $name
        </td>
    </tr>";
}

echo "</table>";

注意:此代码将检查是否提交了多个值,并且在两种情况下均可使用。

答案 1 :(得分:1)

由于您声明的字段名称是数组,因此$ _POST变为多维数组。所以请尝试这样

<?php
   $size = sizeof($_POST['email']);
   echo "<table>" ;
   for($i=0; $i<$size;$i++)
   {
    echo "
      <tr>   
        <td>
            Email :
        </td>
        <td>
             ".$_POST['email'][$i]."
        </td>
        <td>
            Name :
        </td>
        <td>
             ".$_POST['name'][$i]."
        </td>
    </tr>
    ";
    }
     echo "</table>";
?>

您的html更改名称分别为NameEmai l字段name[]email[]。此外,您错放了form标记。它在<table>之后开始,在<table>之后结束。哪个不对。因此请在form代码

之前放置table标记