【问题标题】:CakePHP returning HTML from remote site page to view through AJAX callCakePHP 从远程站点页面返回 HTML 以通过 AJAX 调用查看
【发布时间】:2014-03-11 19:13:28
【问题描述】:

我正在尝试向我的页面添加一个表单请求,该请求将通过 AJAX 调用向用户返回一些 HTML。我正在使用 CakePHP 框架和内置助手来执行 AJAX 请求。我尝试了多种方法来执行请求并返回返回到响应 DIV 的 HTML。但似乎有一些严重的问题阻止您调用外部页面并返回它。

我知道我的 GET 查询工作正常,因为我可以将 firebug 请求位置复制到浏览器中并获得格式正确的响应页面。

从我所做的搜索中,我了解到您不允许跨浏览器请求,您必须从控制器执行某种重定向。我在那里也尝试了几件事但没有成功。如果我只是将我的 ajax 请求更改为本地控制器操作,它确实可以工作。但我需要显示来自我的外部页面的请求响应,该页面从另一台服务器返回数据。我可以控制服务器和页面。

在 CakePHP 中设置它的正确方法是什么?

【问题讨论】:

  • 你在那个远程页面上有授权吗?最好显示一些代码
  • 只需让它在 Javascript 中运行,如果您需要转换帮助,请发布该代码,或发布 Javascript 问题本身 - 这种没有任何代码的混合方式很难帮助您。

标签: jquery ajax cakephp


【解决方案1】:

我不能完全理解您尝试了什么,但是,简单来说,您不能使用 AJAX 来请求来自不同域的内容。您可以做的是使用 PHP 作为代理,我认为这就是您的建议。

因此,如果您有一个带有“stuff”操作的 Things 控制器,您的 AJAX 会像这样从您的 CakePHP 网站请求内容:

$.getJSON('/things/stuff', function(data) {
    console.log(data);
});

然后,您的“填充”操作将使用 PHP 获取外部内容(例如,使用 file_get_contents)并将其(上面的“数据”)返回到您的 AJAX 回调。

function stuff() {
    $content = file_get_contents('http://www.stuff.com/thing');
    $this->set('content', $content);
}

这应该可以满足您的需求。

托比

【讨论】:

  • 托比,这似乎正是我想要的。但是,我收到了来自 file_get_contents 的警告。 [function.file-get-contents]:打开流失败:HTTP 请求失败!我确实看到一些文件被返回。似乎也没有解析 HTML。但我认为如果我能解决这个问题,这正是我所需要的。是否有可能我应该使用 $this->render 而不是 $this->set
  • 你可以输出你想要的内容,显然你可能想要改变它,json_encode 或者其他什么。如果您的 URL 是参数化的,您可以尝试使用 urlencode() 来确保它不会被破坏,这有帮助吗?大概该 URL 在浏览器中工作?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 2016-06-25
  • 2015-07-15
  • 1970-01-01
  • 2022-03-07
  • 1970-01-01
相关资源
最近更新 更多