2014-09-25 54 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