views:

59

answers:

1

I want to create a hello world json rest webservice in test.php:

  <?php header("Content-type: application/json; charset=utf-8");


     $test[] = "hello";  
     $test[] = "world";  

    $json = json_encode($test);
    echo $json;    
  ?>

But nothing is returned when I test it with ajax below why ?

<html>
<head>
<script>
function test()
{ 
    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
        catch (e2) 
        {
          try {  xhr = new XMLHttpRequest();     }
          catch (e3) {  xhr = false;   }
        }
     }

    xhr.onreadystatechange  = function()
    { 
         if(xhr.readyState  == 4)
         {
              if(xhr.status  == 200) 
                  alert(xhr.responseText); 
              else 
                 alert("Error code " + xhr.status);
         }
    }; 

   xhr.open(GET, "test.php",  true); 
   xhr.send(null); 
} 
</script>
</head>

<body>
<script>
test();
</script>
 </body>
 </html> 
+1  A: 
  1. You have spaces before your PHP code starts, so the header call will error
  2. You're setting a text/html Content-Type for JSON data, it should be application/json
  3. You are are replacing the reference to the input element in the form with a string, you probably want to set it's .value property instead. (For that matter, you should probably be accessing it as document.forms.id_of_form.elements.dyn.value for clarity) (Using an input to display output is a rather dubious practice in the first place though)
David Dorward