2012-04-17 40 views
0

所以我有一个运行在HTML5画布上的小程序,我在我的js中有一个小的http get request函数。这个函数本身的工作原理(在互联网上测试过很多例子,它的工作原理),但是当请求发送给它时,我自己的web服务器不会返回正确的东西。HTTP请求通信js到PHP不返回结果?

我的PHP是这样的:

<?php echo VVV::getUser()->userID ?> 

当我在浏览器中打开它,它返回我的正确值的getUser() - >用户ID的回报。然而,当我从我的js发送一个Http请求时,它会得到一个空的结果,但它在因特网上的各种测试页面上使用时会起作用,所以它必须是我的PHP或我的服务器导致此问题。有任何想法吗?

+0

浏览器中的调试控制台显示什么? – Yaniro 2012-04-17 11:15:37

+0

也许我有一个旧的浏览器,但我的浏览器没有自己的调试控制台。 – Wingblade 2012-04-17 11:16:50

+0

你使用什么浏览器?这可能是一个跨域问题吗?你怎么在JavaScript中做请求?你能分享更多的代码吗? – Yaniro 2012-04-17 11:21:36

回答

0

这听起来像是一个跨域AJAX请求问题。为了解决这个问题,你真的只有两个选择:

  • 有PHP做跨域请求。因此,无论使用您的AJAX的网站都会向其自己的服务器(如其自己的ajax.php脚本)发出请求,然后向您的服务器发出请求,然后将其返回给客户端。

  • 尝试使用类似easyXDM的JavaScript库来处理跨域AJAX请求,看看是否有帮助。

+0

第一个如何工作?你的意思是我想在我的服务器上有一个ajax.php,然后我的js请求并且ajax.php请求另一个php文件,并将其结果发回给我的js? – Wingblade 2012-04-17 11:38:57

0

下面是一个简单的跨域请求(JSONP风格)一个小例子:

1)在你的服务器端,改变回应是这样的:

<?php echo('callbackFunc(' . VVV::getUser()->userID . ');') ?> 

2 )在客户端做这样的事情:

function callbackFunc(userId) 
{ 
    // Do something with the userId 
} 

// Create a script tag which will load the call to the callback function 
// with the user ID generated by the PHP code. 

var s = document.createElement("SCRIPT"); 
s.src = "http://yourserver/yourpath/yourscript.php?maybesome=params"; 
document.body.appendChild(s); 

的代码从您的服务器加载将调用callbackFunc()w ith用户标识。