简体   繁体   English

如何在不使用任何库的情况下用php创建JSON rest webservice?

[英]How to create a JSON rest webservice in php without using any library?

I want to create a hello world json rest webservice in test.php: 我想在test.php中创建一个hello world json rest webservice:

  <?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 ? 但是当我用下面的ajax测试它时,什么也没有返回?

<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. You have spaces before your PHP code starts, so the header call will error 在PHP代码开始之前,您有空格,因此header调用将出错
  2. You're setting a text/html Content-Type for JSON data, it should be application/json 您正在为JSON数据设置text/html Content-Type,它应该是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. 您正在用字符串替换对表单中输入元素的引用,您可能想设置其.value属性。 (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) (为此,为清楚起见,您可能应该以document.forms.id_of_form.elements.dyn.value形式访问它)(虽然使用input显示输出是一种相当可疑的做法)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM