0

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

我的 PHP 看起来像这样:

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

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

4

2 回答 2

0

这听起来像是一个跨域 AJAX 请求问题。要解决这个问题,您实际上只有两个选择:

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

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

于 2012-04-17T11:28:28.203 回答
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()。

于 2012-04-17T11:54:19.180 回答