【问题标题】:HTTP get request communication js to PHP doesn't return a result?HTTP获取请求通信js到PHP不返回结果?
【发布时间】:2012-04-28 17:26:34
【问题描述】:

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

我的 PHP 看起来像这样:

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

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

【问题讨论】:

  • 浏览器中的调试控制台显示什么?
  • 也许我有一个旧浏览器,但我的浏览器本身没有调试控制台。
  • 你用的是什么浏览器?这可能是一个跨域问题吗?你是如何在 javascript 中执行请求的?你能分享更多代码吗?
  • 可能是跨域的,我也怀疑。该请求是我从某人那里得到的一个小引擎中的一个功能,我认为我不会在引擎中找到该功能。如果是跨域,我该如何解决?

标签: php javascript html http communication


【解决方案1】:

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

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

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

【讨论】:

  • 第一个究竟如何工作?你的意思是我的服务器上有一个 ajax.php,然后我的 js 请求它,而 ajax.php 请求另一个 php 文件并将其结果发送回我的 js?
【解决方案2】:

这是一个简单的跨域请求(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()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    相关资源
    最近更新 更多