2014-02-19 2 views
0

아약스를 사용하는 주석 달기 시스템이 있습니다.아약스의 포스트 변수에 액세스

PHP 루프를 통해 의견과 답장 상자가있는 div를 생성합니다. 즉, 양식이 반복해서 반복됩니다. 내가 제출 한 양식의 데이터 만 가져 오도록 var parent를 얻으려면 어떻게해야합니까? id 부모가있는 모든 양식 필드가 아닙니다.

$(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> 
+1

Can not catch .. ..? –

답변

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> 
0

는이 같은 AJAX에 데이터를 전달하는 경우 :

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

은 다음 PHP에서 이런 식으로 수집 할 수 있습니다 : 여기에서

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

당신이 찾을 수 있어야하고 당신의 문제를 해결하십시오.

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 
     ... 
    } 
});