Сообщение jquery из формы представления на контроллер PHP не публикуется - PullRequest
2 голосов
/ 11 августа 2011

То, что должно быть значением $id, определяется php-файлом afile.php, который попадает в представление с помощью include('view_file.php'). Я хочу, чтобы форма в «view_file.php» отправляла данные обратно в «afile.php» и снова использовала их для определения значения $id.

Из 'view_file.php': Вот мой jquery / javascript:

function vote() 
  {
    $.post('afile.php',{ poll:$('input:radio[name=poll]:checked').val(), id: $('input:hidden[name=id]').val()});
  };

Вот моя форма:

 <form name='poll' id='poll'>
    <INPUT TYPE="radio" name='poll'  value='poll3' checked/>Yes
    <INPUT TYPE="radio" name='poll'  value='poll2'/>Done
    <INPUT TYPE="radio" name='poll'  value='poll1'/>No
    <INPUT TYPE='button'  value='submit' onClick="vote();" />
    <INPUT TYPE='hidden' name='id' value='<?php echo $id; ?>'/>
</form>

Из 'afile.php':

if(isset($_POST['poll']))
{
   //code
}
else
   //code
include('view_file.php');

Однако этот пост никогда не устанавливается, и я просто не могу понять, почему это так.

Любая помощь / советы / предложения приветствуются.

EDIT: Я понял, что могу сделать это легко, не включая jquery / javascript. Просто используйте метод HTML POST:

<form name='poll' action='afile.php' method='POST'>
   <INPUT TYPE="radio" name='poll'  value='poll3' checked/>Yes
   <INPUT TYPE="radio" name='poll'  value='poll2'/>Done
   <INPUT TYPE="radio" name='poll'  value='poll1'/>No
   <INPUT TYPE='submit'  value='submit' />
   <INPUT TYPE='hidden' name='id' value='<?php echo $id; ?>'/>
</form>

1 Ответ

0 голосов
/ 11 августа 2011

Вы можете просто использовать $('formSelector').serialize() для непосредственного получения данных из формы без необходимости получать значения для каждого ввода. Флажки и радио отправляют только данные POST, если они :checked.

Теперь не имеет значения, как называется форма, она не передается в $ _POST, поэтому ваше состояние

if(isset($_POST['poll']))

Всегда будет ложным, так как нет ввода с именем 'poll'. Я обычно добавляю имя к кнопке отправки, если на одной странице представлено несколько форм.

EDIT: при локальном тестировании следующий код работал без сбоев:

<?php

    $id = 1;
    if (!empty($_POST)) {
        if (!empty($_POST['poll'])) {
            echo "POLL IS NOT EMPTY!! \n";
            var_dump($_POST);
            die();
        }
        else {
            echo "BOO! POLL IS EMPTY! \n";
            var_dump($_POST);
            die();
        }
    }


?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="author" content="Rikudo Sennin" />

        <title>Untitled</title>

        <script src="http://code.jquery.com/jquery-latest.js"></script>

        <script>
        $(function() {
            $('#poll').submit(function() {
                $this = $(this);
                $.post(
                    "form-get-test.php",
                    $this.serialize(),
                    function(data) {
                        alert(data);
                    }
                )

                return false;
            });
        })

        </script>
    </head>

    <body>

    <form name='poll' id='poll'>
        <INPUT TYPE="radio" name='poll'  value='poll3' checked/>Yes
        <INPUT TYPE="radio" name='poll'  value='poll2'/>Done
        <INPUT TYPE="radio" name='poll'  value='poll1'/>No
        <INPUT TYPE='button'  value='submit' onClick="vote();" />
        <INPUT TYPE='hidden' name='id' value='<?php echo $id; ?>'/>

        <button type="submit" name="poll_submit">Send</button>
    </form>

    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...