使用POSTed变量无法在PHP中回显HTML字符串

时间:2014-03-22 23:14:03

标签: php html

上下文

使用PHP来回显HTML。

问题:

除非我硬编码$ n(即$ n = 2;),否则不会显示回显的HTML。

故障排除:

- 我已经确认我通过echo,var_dump,print_r接收了POST数据。

- 我已经确认for循环的工作原理是用硬编码的数字代替$ n。

- 我确保通过POST接收的字符串是一个整数。

   <?php
   $n=intval($_POST["a"]);

    for($count=1;$count<=$n;$count++) 
    {
    echo '<li>foo ' . $count . ':<input type="text" name="bar' . $count . '" value="baz ' .  $count . '"></li>';
    };
    ?>

编辑:PHP从AJAX获得POST(见下文)

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("#formid").change(function(){
     $.ajax({
        url     : $(this).attr('action'),
            type    : $(this).attr('method'),
            data    : $(this).serialize(),
            success : function( response ) {
                        alert( response );
                      }
        });
    $("#div1").load("load.php");
  });
});
</script>

2 个答案:

答案 0 :(得分:2)

修改按照your originally posted question

'

之后,你错过了value="baz
value="baz .  $count . '"></li>
          ^ // right there

完整的回音应该是:

echo '<li>foo ' . $count . ':<input type="text" name="bar' . $count . '" value="baz' .  $count . '"></li>';

之前我曾经咬过我,而且我通常用来连接长字符串是在每个句点之后,我按Enter键并创建一个新行。

请记住,PHP对空白区域不敏感,因此您可以随意分隔所有您喜欢的行。

答案 1 :(得分:0)

目前还不清楚您的预期结果应该是什么,但使用后面的( fixed )代码会在HTML源代码中产生以下内容:

<li>foo 1:<input type="text" name="bar1" value="baz1"></li>
<li>foo 2:<input type="text" name="bar2" value="baz2"></li>
<li>foo 3:<input type="text" name="bar3" value="baz3"></li>
<li>foo 4:<input type="text" name="bar4" value="baz4"></li>
<li>foo 5:<input type="text" name="bar5" value="baz5"></li>

PHP(使用5作为数字)

旁注:为了清楚起见,我在代码末尾添加了. "\n"

<?php

// $n=intval($_POST["a"]);

   $n=intval(5);

    for($count=1;$count<=$n;$count++) 
    {

echo '<li>foo ' . $count . ':<input type="text" name="bar' . $count . '" value="baz' .  $count . '"></li>' . "\n";

    };
?>

修改

表格成功测试包括:

<?php
if(isset($_POST['submit'])){

//   $n=intval(5);

   $n=intval($_POST["a"]);

    for($count=1;$count<=$n;$count++) 
    {
echo '<li>foo ' . $count . ':<input type="text" name="bar' . $count . '" value="baz' .  $count . '"></li>' . "\n";

    };

}

?>

<form method="post" action="">

Number: 
<input type="text" name="a">
<br>
<input type="submit" name="submit" value="Submit">
</form>

旁注:

只是为了测试这两种方法 - 一个有一个,一个没有(intval),$n=$_POST["a"];也有效。