up vote 0 down vote favorite

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

67% accept rate
Why you don't use jQuery or other library? – infinity Oct 30 at 13:09
Because I want to learn the basics first (json + xmlhttprequest) – user310291 Oct 30 at 16:56

1 Answer

up vote 1 down vote
  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)
link|flag
I have taken into account 1 & 2. Instead of 3 I just want to show alert but it doesn't work. – user310291 Oct 30 at 16:57

Your Answer

 
or
never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.