【问题标题】:jQuery Mobile Hosted on Server 1 and Retrieve Data from Server 2jQuery Mobile 托管在服务器 1 上并从服务器 2 检索数据
【发布时间】:2013-05-22 00:59:36
【问题描述】:

我有一个托管在服务器 1 上的简单 jQuery Mobile 应用程序。它包括一些查询托管在服务器 2 上的数据库的 php 页面。

当一切(jQuery Mobile 网站和数据库)都托管在同一台服务器上时,这一切都很好,但是当它们分开时,它不会显示任何数据。 php 页面本质上是查询数据库并检索 20 条记录,然后将这些记录输出为 html,例如:

<div data-role="content">

    <ul data-role="listview" data-filter="true">
        <? echo $output; ?>
    </ul>
</div>

$output 只是一个 php 变量,其中包含 jQuery Mobile 期望格式的记录列表视图。

任何人都知道我如何让这个 php 页面在服务器 1 上运行时工作,而服务器 1 正在访问服务器 2 上托管的数据。

我认为问题与安全有关 - 当数据库位于服务器 2 上时,jQuery Mobile 会因为与跨域请求相关的某些事情而阻止请求?我在尝试从数据库中检索数据时遇到“未知错误”,这并不是特别有用。

如果我在服务器 1 上放置相同的 getContacts.php 页面并删除所有 jQuery 移动组件,那么它只是一个直接的 php 页面,可以查询服务器 2 上的数据库并输出 html,它可以完美运行。

更新:我找到了这个页面:http://jquerymobile.com/demos/1.2.0/docs/api/globalconfig.html

讨论了默认设置为 false 的 allowCrossDomainPages 选项。我想尝试覆盖它并将其设置为 true 但不确定如何 - 任何人都知道如何设置此覆盖?不幸的是,我不熟悉 jQuery,只是按原样使用 jQuery Mobile。

【问题讨论】:

  • 问题更新后编辑:jQuery 不关心数据最初来自哪里(如果您的 PHP 输出格式化的 html/javascript)。您可能做错了什么(例如语法错误)。向我们展示您的代码
  • 语法很好——当数据库/网站在同一台服务器上时,同一个页面可以正常工作。该页面在不属于 jQuery Mobile 站点时也可以正常工作。
  • 是的,在同样的情况下,我也会首先假设。但是查询数据显然也没有问题(您了解 PHP 和 html 的工作原理吗?)向我们展示更多您的代码并没有什么坏处。例如,检查“生成”的 html(带有 jQ​​uery 移动组件)
  • 我认为问题与安全有关 - 当数据库在服务器 2 上时,jQuery Mobile 会因为与跨域请求相关的某些原因而阻止请求?尝试从数据库中检索数据时遇到“未知错误”,这并不是特别有用
  • 这真的取决于你在做什么。如果 PHP 完成所有查询并创建一个格式化的 Web 文档,那么应该没有问题。如果您向不同的域发出 Ajax 请求,那就另当别论了(查看 CORS - 在您的服务器 1 页面上设置正确的标头)。虽然你没有提到 ajax 请求

标签: jquery jquery-mobile


【解决方案1】:

在这种情况下,PHP header('Access-Control-Allow-Origin: http://server2.example.com') 应该可以工作(将其放置在 jQuery 发出请求的页面上 - 在发送任何内容之前放在页面顶部)

【讨论】:

  • 谢谢 - 我试过了,但得到了相同的结果。我认为这可能与此处讨论的 allowCrossDomainPages 选项有关:jquerymobile.com/demos/1.2.0/docs/api/globalconfig.html
  • 我之前也读过 jQuery 中的 cors 选项 - 没有运气(也许我做错了)。这不是您应该能够轻松地使用 javascript 设置的东西——为了安全(这就是为什么服务器必须指定允许的内容)。尝试使用谷歌浏览器(我发现那个控制台最好)和ctrl shift j 打开 javascript 控制台。然后你就可以看到有什么样的错误了
猜你喜欢
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 2018-09-01
  • 2013-02-01
  • 1970-01-01
  • 2013-05-26
相关资源
最近更新 更多