Невозможно отобразить строку HTML в PHP, используя переменную POSTed

0

Контекст:

используя 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>
  • 0
    Вы делали var_dump($n) чтобы увидеть, что вы на самом деле используете в цикле? Кроме того , ваше value часть эха неверна. ты набиваешь буквальный текст baz . $count в поле значения, а не (скажем) baz5 .
  • 0
    см. также раздел «Устранение неисправностей», я отредактировал эхо - я неправильно скопировал / вставил
Показать ещё 6 комментариев
Теги:

2 ответа

2

Изменить: согласно 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 является нечувствительным к пробелу, поэтому не стесняйтесь отделять строки, которые вы хотите.

  • 0
    Причины, по которым я ненавижу объединение :) "<li>foo $count:<input type='text' name='bar$count' value='baz$count'></li>"
  • 0
    Извините, я неправильно скопировал и вставил - в исходном коде у меня была одинарная кавычка. Я отредактировал свой блок кода для отражения.
Показать ещё 4 комментария
0

Неясно, каков должен быть ваш ожидаемый результат, но используя (фиксированный) код, следующий за ним, вывел в 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"]; также работал.

  • 0
    да, я думаю, что это как-то связано с POST. Если вы заметите в посте, я отмечу, что жесткое кодирование работает, но использование POST - нет.
  • 0
    Дай мне посмотреть, что я могу сделать. Я составлю быструю форму для проверки. @ user3435933
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню