Форма JQUERY $ .post для скрипта PHP

0

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

Я пытаюсь отправить данные формы в php-скрипт. В настоящее время поле ввода #userreviewtitle работает отлично, однако textarea #comment и выбор параметров #hearts, кажется, не публикуются. Они будут предупреждать с помощью jquery, поэтому сценарий подбирает их, а просто не просто публикует.

Что я здесь делаю неправильно? Стремитесь справиться с этим и научиться!

Вот форма:

    <div id="userreviewcontainer">

    <form id="userreview" name="userreview" action="" method="POST">
    <input type="text" id="userreviewtitle" name="userreviewtitle" placeholder="Review title">
    <textarea id="comment" name="comment" rows="4" placeholder="What is your opinion of <?php the_title(); ?>?"></textarea>
    <div id="userreviewrating">
    <select name="hearts" id="hearts">
    <option value="" disabled selected>Your Rating</option>
    <option  value="1">1 Heart</option>
    <option value="2">2 Hearts</option>
    <option value="3">3 Hearts</option>
    <option value="4">4 Hearts</option>
    <option value="5">5 Hearts</option>
    </select>
    </div>
    <div id="userreviewratingsubmit">   
    <?php if($_SESSION['login'] !== 1 || $_SESSION['logged_in'] !== "logged") {?>
    <a rel="prettyPhoto" href="#user_inline" class="button customreviewbutton">Submit</a>
   <?php }

    else if($_SESSION['login'] === 1 || $_SESSION['logged_in'] === "logged"){ ?>
    <input type="submit" value="submit" id="performreview" class="button customreviewbutton" alt="Submit"/>
    <?php } ?>


    </div>
    <div id="clear"></div>
    </form>

Вот JQuery:

<script type="text/javascript">
$(document).ready(function($){



                $("#performreview").on('click',function(event) {
                //Create Variables
                var title = $('#userreviewtitle').val();
                var comment = $('#comment').val();
                var hearts =  $('#hearts').val();
                // Prevent form from submitting the normal way
                $("#userreviewnew").empty(); 

                $.post( "/wp-content/themes/xxxxxxx/process-comment.php", 
                {
                'userreviewtitle' : title,
                'comment' : comment,
                'hearts' : hearts
                },
                function( data ) {
                $('#userreviewnew').append(data);});

                event.preventDefault();
                });
});
</script>

Еще раз большое спасибо, если вы можете указать мне в правильном направлении здесь

  • 0
    Вы пробовали просто сериализовать данные формы напрямую? $ ("# userreview"). serialize () (вместо вашей строки json).
  • 0
    Извините @ jeff-ancel, возможно, вам придется объяснить это немного дальше. Я все еще пытаюсь выучить Jquery. - Вместо твоей джсонской струны?
Показать ещё 2 комментария
Теги:

1 ответ

0

Что говорят два комментатора, так это то, что вы выполняете лишний и ненужный шаг, собирая все значения формы и передавая их в вызов Ajax.

Лучше всего использовать метод jQuery serialize(). Ваш код будет выглядеть примерно так (обратите внимание, что я предпочитаю синтаксис $.ajax но все равно легко следовать):

$('form').on('submit'), function(e) {
  e.preventDefault();

  $.ajax({
    type: 'post',
    data: $(this).serialize(),
    dataType: 'html',
    success: function(result) {
      $('userreviewnew').append(result);
    },
    error: function(xhr, status, err) {
     console.log(err);
    }
  });

Я не совсем уверен, что вы делаете с состоянием сеанса, но важной частью является строка в $.ajax которая начинается с data. Обновите, если вы все еще не получаете ожидаемые значения после создания этого мода.

Ещё вопросы

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