title: JSON returning null with jQuery $.ajax post type
body: <p>Am receiving null from json post using jquery. see my code below in order.</p>
  
  <p>user fills in this form and submits:</p>
  
  <pre><code>&lt;form name="newsletterSignup" id="newsletterSignup" method="post"&gt;
  
          &lt;input type="text" name="firstName" id="firstName" type="text" autocomplete="off" placeholder="Enter your name" /&gt;
  
          &lt;input type="text" name="email" id="email" type="text" autocomplete="off" placeholder="Enter a valid email address"/&gt;
  
          &lt;input type="submit" name="newsletterSubscribe" id="newsletterSubscribe" value="Sign me up now!" /&gt; 
  
      &lt;/form&gt;
  </code></pre>
  
  <p>Then this is run:</p>
  
  <pre><code>var BASE_URL = 'http://www.thegurucoder.com/';
  
  $('#newsletterSignup').submit(function()
  {
  
      var ajaxURL = BASE_URL + '_php/ajax/newsletterSubscribe.php';
  
      $.ajax({
          type: 'POST',
          url: ajaxURL,
          data: { firstName:$('#newsletterSignup #firstName').val(), email:$('#newsletterSignup #email').val()},
          dataType: 'json',
          success: function(data){
  
              alert(data);
  
              if(data.redirect == 'true')
              {
  
                  window.location = data.url;
  
              }
              else
              {
  
                  $(this).notify({prependTo:'#master', type:'negative', message:data.message, delay:3200, animation:'slide'});
  
              }
  
          }
      });
  
      return false;
  
  });
  </code></pre>
  
  <p>Which in turn runs this:</p>
  
  <pre><code>function newsletterSubscribe()
  
  {
  
  if(isset($_POST['newsletterSubscribe']))
  {
  
      header('Content-Type: application/json');
  
      $db = new Connection(DB_HOST, DB_USER, DB_PASS, DB_NAME);
  
      $firstName = $_POST['firstName'];
      $email = $_POST['email'];
  
      if($email != '')
      {
  
          if(isDuplicateValue('subscribers', 'email', $email))
          {
  
              echo json_encode(array(
                  'message' =&gt; 'You have already subscribed to this newsletter.',
                  'redirect' =&gt; 'false'
              ));
  
          }
          else
          {
  
              $parameters = array(
                  'table' =&gt; 'subscribers',
                      'fieldsAndValues' =&gt; array(
                      'firstName' =&gt; $firstName,
                      'email' =&gt; $email,
                      'addedDate' =&gt; datetime()
                      )
              );
  
              $db-&gt;insert($parameters);
  
              echo json_encode(array(
                  'redirect' =&gt; 'true',
                  'url' =&gt; BASE_URL.'subscribed'
              ));
  
          }
  
      }
      else
      {
  
          echo json_encode(array(
              'message' =&gt; 'You did not enter a valid email address.',
              'redirect' =&gt; 'false'
          ));
  
      }
  
  }
  
  }
  </code></pre>
  
  <p>And the problem is:</p>
  
  <p>Uncaught TypeError: Cannot read property 'redirect' of null</p>
  
  <p>These are the headers i am getting in inspector.</p>
  
  <pre><code>Request URL:http://www.thegurucoder.com/_php/ajax/newsletterSubscribe.php
  Request Method:POST
  Status Code:200 OK
  Request Headersview source
  Accept:application/json, text/javascript, */*; q=0.01
  Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
  Accept-Encoding:gzip,deflate,sdch
  Accept-Language:en-US,en;q=0.8
  Connection:keep-alive
  Content-Length:17
  Content-Type:application/x-www-form-urlencoded
  Cookie:PHPSESSID=f3015d3c6fa08e53fc562477da0f563f
  Host:www.thegurucoder.com
  Origin:http://www.thegurucoder.com
  Referer:http://www.thegurucoder.com/blog
  User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7
  X-Requested-With:XMLHttpRequest
  Form Dataview URL encoded
  firstName:
  email:
  Response Headersview source
  Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  Connection:close
  Content-Encoding:gzip
  Content-Language:en-UK
  Content-Length:20
  Content-Type:text/html; charset=UTF-8
  Date:Thu, 05 Jan 2012 15:21:54 GMT
  Expires:Thu, 19 Nov 1981 08:52:00 GMT
  Pragma:no-cache
  Server:Apache/2.2.16 (Unix) mod_ssl/2.2.16 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
  Vary:Accept-Encoding
  X-Powered-By:PHP/5.2.14
  </code></pre>