Контекст:
используя PHP для эха HTML.
Выпуск:
Echoed HTML не отображается, если я не закодировал $ n (т.е. $ n = 2;).
Исправление проблем:
-I 've подтвердил, что я получаю данные POST через echo, var_dump, print_r.
-I 've подтвердил, что цикл for работает, заменяя жестко закодированные числа для $ n.
-I 'убедился, что строка, получаемая через 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>';
};
?>
EDIT: PHP получает POST от AJAX (см. Ниже)
<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>
Изменить: согласно your originally posted question
Вам не хватает значения '
after value="baz
value="baz . $count . '"></li>
^ // right there
Полное эхо должно быть:
echo '<li>foo ' . $count . ':<input type="text" name="bar' . $count . '" value="baz' . $count . '"></li>';
Это укусило меня раньше, и то, что я обычно делаю, чтобы конкатенировать длинные строки, это после каждого периода, я нажимаю enter и создаю новую строку.
Помните, что PHP является нечувствительным к пробелу, поэтому не стесняйтесь отделять строки, которые вы хотите.
"<li>foo $count:<input type='text' name='bar$count' value='baz$count'></li>"
Неясно, каков должен быть ваш ожидаемый результат, но используя (фиксированный) код, следующий за ним, вывел в 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"
. "\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"];
также работал.
var_dump($n)
чтобы увидеть, что вы на самом деле используете в цикле? Кроме того , вашеvalue
часть эха неверна. ты набиваешь буквальный текстbaz . $count
в поле значения, а не (скажем)baz5
.