2014-09-25 52 views
-1

我需要找到一些工具可以从.html调用.php文件。 这里有一个问题: 而这个例子中的作品,从PHP文件:xmlrequest不会从php中返回文本

<html> 
    <head> 
    <meta http-equiv="content-type" content="text/html" charset="utf-8"> 

    </head> 
    <body> 

    <p>Your IP is </p> 
    <?php 
      echo $_SERVER['REMOTE_ADDR']; 
    ?> 
    <hr /> 
    </body> 
</html> 

这个例子不回响在.html文件IP:

---from index.html---

<html> 
    <head> 
     <meta http-equiv="content-type" content="text/html" charset="utf-8"> 
     <script type="text/javascript"> 
     function getIpNumber() { 
      var xmlhttp=new XMLHttpRequest(); 
      xmlhttp.onreadystatechange=function() { 
       if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
        document.getElementById("showIpNumber").innerHTML=xmlhttp.responseText; 
       } 
      } 
      xmlhttp.open("POST","getip.php",true); 
      xmlhttp.send(); 
     }  

     </script> 
    </head> 
    <body onload="getIpNumber();"> 
    <p>Your IP is <span id="showIpNumber"></span></p> 
</html> 

---from getip.php---

<?php 
    echo "$_SERVER['REMOTE_ADDR']"; 
?> 

这里有什么问题?

+0

看看你的浏览器的开发者工具。看看JavaScript控制台。它报告任何错误吗?看看Net标签。请求是否被提出?它会得到回应吗?它们是否包含您期望的数据? – Quentin 2014-09-25 09:09:41

+0

@Quentin的确,有一个错误500,但我发现有什么问题 – 2014-09-25 09:17:31

+0

[**如下发布**](http://stackoverflow.com/a/26034671/1415724)@YaroslavAlexeevich它是双引号封装'“$ _SERVER ['REMOTE_ADDR']”' - 细节在我的答案。 – 2014-09-25 09:20:14

回答

2

改变这一行

echo "$_SERVER['REMOTE_ADDR']"; 

echo $_SERVER['REMOTE_ADDR']; 

有错误报告上就已经暗示:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /file.php on line 2


添加error reporting到文件的顶部(S )他会lp在生产测试期间。

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

正如评论所指出的克诺索斯:

“您还可以使用echo "{$_SERVER['REMOTE_ADDR']}";虽然在这种情况下,这将是毫无意义的它可以在更大更复杂的字符串有用虽然。”

+0

谢谢,@Fred,虽然,似乎很奇怪为什么双引号不能解释$ – 2014-09-25 09:22:28

+1

你也可以使用echo“{$ _SERVER ['REMOTE_ADDR']}”;虽然在这种情况下,这将是毫无意义的。但它可以用于更大更复杂的字符串。 – Knossos 2014-09-25 09:27:58

+0

@YaroslavAlexeevich不客气。考虑接受答案,以下是关于这个问题的详细信息:http://meta.stackexchange.com/a/5235/**。另外,Knossos在那里有一个点。你也可以坚持使用'echo $ _SERVER ['REMOTE_ADDR'];'除非你真的想用引号。欢迎来到Stack。 – 2014-09-25 09:31:45

0

只需更换这行

echo "$_SERVER['REMOTE_ADDR']"; 

这个

echo $_SERVER['REMOTE_ADDR']; 
+0

谢谢,但有点晚了:) – 2014-09-25 09:43:53