Как всегда заблаговременно, если вы потратите время, чтобы взглянуть на это для меня.
Я пытаюсь отправить данные формы в 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>
Еще раз большое спасибо, если вы можете указать мне в правильном направлении здесь
Что говорят два комментатора, так это то, что вы выполняете лишний и ненужный шаг, собирая все значения формы и передавая их в вызов 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
. Обновите, если вы все еще не получаете ожидаемые значения после создания этого мода.