HTTP获取请求通信js到PHP不返回结果?

时间:2012-04-17 11:11:53

标签: php javascript html5 http communication

所以我在HTML5画布中运行了一个小js程序,我的js中有一个小的http get请求函数。这个功能本身是有效的(在互联网上用很多例子对它进行了测试并且有效),但是当我发送请求时,我自己的网络服务器并没有返回正确的内容。

我的PHP看起来像这样:

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

当我在浏览器中打开它时,它会返回getUser() - &gt; userID返回的正确值。但是,当我从我的js发送一个Http请求时,它得到一个空的结果,但它在互联网上的各种测试页面上使用时都有效,所以它必须是我的PHP或我的服务器导致这个问题。任何想法?

2 个答案:

答案 0 :(得分:0)

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

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

  • 尝试将easyXDM JavaScript库用于跨域AJAX请求,看看是否有帮助。

答案 1 :(得分: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 );

从服务器加载的代码将使用用户ID调用callbackFunc()。