Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQUERY$.post表单到PHP脚本_Jquery - Fatal编程技术网

JQUERY$.post表单到PHP脚本

JQUERY$.post表单到PHP脚本,jquery,Jquery,如往常一样,如果你花时间帮我看一下,请提前感谢 我正在努力将表单数据发布到php脚本中。目前,输入字段#userreviewtitle工作正常,但是文本区域#注释和选项选择#hearts似乎没有发布。他们将通过jquery发出警报,因此脚本将接收他们,而不仅仅是发布 我做错了什么?渴望解决这个问题并学习 表格如下: <div id="userreviewcontainer"> <form id="userreview" name="userreview" ac

如往常一样,如果你花时间帮我看一下,请提前感谢

我正在努力将表单数据发布到php脚本中。目前,输入字段#userreviewtitle工作正常,但是文本区域#注释和选项选择#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>


这两位评论员所说的是,通过收集所有表单值并将它们传递到Ajax调用中,您正在执行一个额外且不必要的步骤

更好的方法是使用jQuery方法。您的代码看起来是这样的(请注意,我更喜欢
$.ajax
语法,但应该仍然很容易理解):


我不完全确定您对会话状态做了什么,但重要的部分是
$.ajax
调用中以
数据开始的那一行。如果进行此修改后仍无法获得预期值,请进行更新。

您是否尝试过直接序列化表单数据$(#userreview”).serialize()(代替json字符串)。抱歉@jeff ancel,您可能需要进一步解释一下。我还在努力学习Jquery代替你的json字符串?我想他指的是你的数据对象。你没有json字符串。你能详细说明一下@kevin-b吗?
<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>
$('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);
    }
  });