访问Ajax中的Post变量

时间:2014-02-19 08:37:36

标签: javascript php ajax

我有一个使用ajax的评论系统。

它通过php循环生成带注释的div和回复框,这意味着表单会一遍又一遍地重复。如何让var parent只从我提交的表单中获取数据?并非所有具有id parent的表单字段。

$(function () {
    $('.reply').on('submit', function (e) {

        $.ajax({
            type: 'post',
            url: '/app/reply',
            data: $(this).serialize(),
            success: function (data) {
                var parent = $('#parent').val();
                $("#comment_"+parent).append(data);
                var form = document.getElementById("form_" + parent);
                form.reset();
            }
        });
        e.preventDefault();
    });
});
<form action="" method="POST" class="reply" id="form_<?php echo $comment['id'] ?>">
    <textarea id="textArea"  name="comment"></textarea>
    <input type="submit" name="upload_btn" value="Reply">
    <input type="hidden" value="<?php echo $post ?>" name="post">
    <input type="hidden" value="<?php echo $comment['id'] ?>" id ="parent" name="parent">
    <input type="hidden" value="pop" name="location">
    <input type="hidden" value="<?php echo $level ?>" name="level">

</form>

3 个答案:

答案 0 :(得分:2)

首先从隐藏字段中删除id=parent,然后您可以像这样访问;

<script>
$('.reply').on('submit', function (e) {
    var that    =   this;
    $.ajax({
        type: 'post',
        url: '',
        data: $(this).serialize(),
        success: function (data) {
            var parent = $(that).find('input[name=parent]').val();
            //your code
        }
    });
    e.preventDefault();
});
</script>

答案 1 :(得分:0)

如果您使用AJAX传递数据:

...
type: 'post',
url: '/app/reply',
data: { 'x': '1973' },
success: function (data) {
...

然后你可以这样用PHP收集它:

$year = $_POST['x']; // will be set to the string '1973'

从这里你应该能够找到并解决你的问题。

答案 2 :(得分:0)

如果我正确理解您的问题,则问题出在var parent = $('#parent').val();。此行始终返回调用范围$.ajax()函数的相同值。 解决这个问题的安全方法可能是将您调用$.ajax()函数的表单的id传递给它,然后使用此值进行查询。
这将是这样的:

 $.ajax({
    type: 'post',
    url: '/app/reply',
    _formId: this.id
    data: $(this).serialize(),
    success: function (data) {
      var parent = $('#div_prefix'+this._formId).val(); //Now you have diferent parent                      for every form
      ...
    }
});