2014-03-25 55 views
0

我想在eclipse和android模拟器的phonegap中加载php中的文本。 我不知道我在做什么错。phonegap + php不起作用

我的代码的index.html:

<html> 
    <head> 
    <script src="cordova.js"></script> 
    <script> 
     var xmlhttp; 
     window.onload = function(){ 
     document.addEventListener("deviceready", init, false); 
     }; 

     function init(){ 
     var url = "http://localhost/php-handyAPP/phpinfo.php"; 
     xmlhttp = new XMLHttpRequest(); 
     xmlhttp.onreadystatechange = function(){ 
      alert (xmlhttp.readyState); 
      if(xmlhttp.readyState == 4 && xmlhttp.readyState == 200) 
      { 
       document.getElementById("result").innerHTML = xmlhttp.responseText; 
      } else { 
       document.getElementById('result').innerHTML = "Error loading page "; 
      } 
     }; 
     xmlhttp.open("GET", url , true); 
     xmlhttp.send(null); 
    }; 
    </script> 
    <title>phonegap + php</title> 
    </head> 

    <body> 
     <div id="result"></div> 
    </body> 

</html> 

我的PHP代码 - phpinfo.php的:

<?php 
echo 'Hello World'; 
?> 

我的config.xml

<access origin="*"/> 

我的AndroidManifest.xml

​​

我在android模拟器中得到if语句“Error loading page”。

+0

可能由于该网址包含本地主机,该网站只能在您的电脑上运行,无法通过您的网络或互联网访问。 –

+0

您很可能正在进行跨域请求,这自然会失败。查看[同源策略](http://en.wikipedia.org/wiki/Same-origin_policy)并调整您的phonegap和xmlhttp请求URL。 – blue

回答

0

PhoneGap没有PHP服务器。

在你的代码试图加载位于本地主机的PHP页面:var url = "http://localhost/php-handyAPP/phpinfo.php";

本地主机在这种情况下是你的模拟器,我想这模拟器上没有一个PHP服务器。

如果PHP本地计算机(其中仿真器是从RAN)上托管,那么你可以尝试:

var url = "http://10.0.2.2/php-handyAPP/phpinfo.php";代替,但我不看好它会奏效。

可能重复:Android SDK Connect to Web Server on Host

+0

我的PHP(xampp)。托管在我的机器上(模拟器也在运行)。你是对的它不适用于 var url =“http://10.0.2.2/php-handyAPP/phpinfo.php”; 或 var url =“http://127.0.0.1/php-handyAPP/phpinfo.php”; – murat

0

您应该添加在PHP文件的代码,你要调用

<?php header('Access-Control-Allow-Origin: *'); ?>

添加它,它会肯定工作。

+0

我已经测试过了,但不幸的是不再工作。 – murat

+0

尝试与ajax jquery它将会工作我不知道javscript ajax所以试图做到这一点。 – Sri

+0

好的我在这里搜索一个例子jquery,ajax与PHP – murat