user1261800
user1261800

Reputation:

PHP: Echoing values of input fields

I am grabbing the values of several input fields with the help of an Ajax/JS function. The issue is that the values of the textbox are not being echoed. I checked with the firebug tool and it shows that the post is performed but there is a blank value. Why is the PHP not echoing the value when the JS function submits it?

EXAMPLE

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>

Upvotes: 0

Views: 167

Answers (2)

Rajan Rawal
Rajan Rawal

Reputation: 6317

Friend first understand the Javascript behaviour. When you post a form, it becomes one request to the server. At the same time when you send an ajax to server it becomes another separate request to the server

So you should either do form post or ajax.

As you are using ajax here you, in the ajax request you have to pass data separately in data parameter

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

Upvotes: 0

Tessmore
Tessmore

Reputation: 1039

You need to use .serialize() on the form probably

Upvotes: 1

Related Questions