1

Ajax/JS 関数を使用して、いくつかの入力フィールドの値を取得しています。問題は、テキスト ボックスの値がエコーされていないことです。firebug ツールで確認したところ、投稿は実行されていますが、値が空白になっています。JS 関数が値を送信したときに、PHP が値をエコーし​​ないのはなぜですか?

JS

<script>
$(document).ready(function() { 
    var timer = null;  
    var dataString;    
    function submitForm(){ 
        $.ajax({ type: "POST", 
            url: "index.php", 
            dataType: 'json', 
            success: function(result){ 
            $('#special').html('<p>' +  $('#resultval', result).html() + '</p>');} 
        }); 
        return false; 
    } 
    $('#contact_form').on('keyup', function() { 
        clearTimeout(timer); 
        timer = setTimeout(submitForm, 2000); 
    }); 
});  
</script>

HTML

<form action="" method="post" enctype="multipart/form-data" id="contact_form" name="form4"> 
 <div class="row">  
  <div class="label">Contact Name *</div> <!-- end .label --> 
    <div class="input"> 
      <input type="text" id="contact_name" class="detail" name="contact_name" value="<?php echo isset($_POST['contact_name'])? $_POST['contact_name'] : ''; ?>" />  
      <div id="special"><span id="resultval"><? echo $_POST['contact_name'];  ?></span></div> 
    </div><!-- end .input--> 
 </div><!-- end .row --> 
 <div class="row">  
  <div class="label">Email Address *</div> <!-- end .label --> 
   <div class="input"> 
    <input type="text" id="email" class="detail" name="email" value="<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>" />  
    <div id="special"><span id="resultval"><? echo $_POST['email'];  ?></span></div> 
   </div><!-- end .input--> 
 </div><!-- end .row --> 
</form>
4

2 に答える 2

2

友人は、最初に Javascript の動作を理解します。 フォームを投稿すると、サーバーへの 1 つのリクエストになります。ajaxをサーバーに送信すると同時に、サーバーへの別の別のリクエストになります

したがって、フォーム ポストまたは ajax を実行する必要があります。

ここで ajax を使用しているため、ajax リクエストでは、データ パラメータでデータを個別に渡す必要があります。

<script type="text/javascript">
$(document).ready(function() { 
    var timer = null;  
    var dataString;    
    function submitForm(){ 
        $.ajax({ type: "POST", 
            url: "index.php", 
            dataType: 'json', 
            data: $('#contact_form').serialize(), // check this line
            success: function(result){ 
            $('#special').html('<p>' +  $('#resultval', result).html() + '</p>');} 
        }); 
        return false; 
    } 
    $('#contact_form').on('keyup', function() { 
        clearTimeout(timer); 
        timer = setTimeout(submitForm, 2000); 
    }); 
});  
</script>
于 2012-07-20T03:05:50.967 に答える
1

.serialize()おそらくフォームで使用する必要があります

于 2012-07-20T02:51:09.873 に答える