title: Why jquery .fail does not receive arguments firing error intentionally
body: <p>I am trying to use custom json encoded data after firing an error on server
  (throwing error intentionally) under jquery ajax request.</p>
  
  <p>I don´t understand what is wrong, because the header is right and the data arrives. But it seems that the exception arguments are not passed to the exception callback in javascript.</p>
  
  <p>The php code</p>
  
  <pre><code>&lt;?php
  
   if ( valid_input() )
   {
      ...      
   } 
   else // The validation goes wrong so, I have to return error
   {
     // Error code
     header('HTTP/1.1 500 Format does not match');
     header('Content-Type: application/json');    
     die(json_encode(array('message' =&gt; 'Bad format', 'code' =&gt;1000)));
   }
  ?&gt;
  </code></pre>
  
  <p>The javascript code</p>
  
  <pre><code>$("#uploadbutton").on('click',function(e)
  {
      $.ajax({
          url:"http://www.oneurl.com/upload.php",
          async:true,
          type:'post',
          data:formdata
      })
      .done(render_data)
      .fail(upload_error);
  });
  
  //
  function render_data(params) {...}
  
  function upload_error(jqxhr,textstatus,ex)
  {
   alert("Error:-&gt; ", ex.message);   
  }
  </code></pre>
  
  <p>Response from server</p>
  
  <pre><code>Status Code: 500 Format does not match
  Content-Type: application/json
  Response: {"message":"Bad Format","code":1000}
  </code></pre>
  
  <p>But the alert is undefined instead Bad Format.
  What is wrong ?¿</p>