【问题标题】:Phonegap won't make connection to external databasePhonegap 不会连接到外部数据库
【发布时间】:2014-03-28 21:14:04
【问题描述】:

我一直在尝试使用 Phonegap 连接到我的数据库,并通过 ajax 请求连接到它的 PHP 文件。但是信息没有显示。

对于 PHP 文件,我只是建立一个连接并创建一个稍后使用的 json 字符串。

Javascript 文件 script.js 如下:

var request = new XMLHttpRequest;
request.open('GET' , 'http://websiteurl.com/example.php/', false);
request.send(null);
console.log(request);

if(request.status == 0)
console.log(request.responseText);

var firstname;
var obj = JSON.parse(request.responseText);
console.log(obj);
firstname       = obj[0].Firstname;

document.getElementById("firstname").innerHTML = firstname;

例如,这在我的服务器上运行没有问题,并在我的页面上正确显示。 HTML 页面将加载 javascript 文件并应在数据库中显示来自 firstname 的信息,但目前不显示任何内容。

 <script src="js/script.js"> </script>

 <div id="Info">
    <p>
        <strong>Firstname:</strong>
        <span id = "firstname"></span>
  </p>
</div>

我已尝试更改 phonegap config.xml 和 androidmanifest.xml 中的权限,但似乎没有任何效果。

【问题讨论】:

  • 你遇到了什么错误?你能展示你在 config.xml 和 androidmanifest.xml 中更改权限所做的工作吗?

标签: javascript php android html cordova


【解决方案1】:

你需要服从Same-origin policy

您很可能需要提出跨域请求 - 希望this article 可以帮助您。

【讨论】:

  • 我已经使用了原始权限并将其设置为 *。像 。这是正确的还是需要其他的?
  • @patrick:请分享 request.statusText 和 request.status 的控制台日志。另外,请注意主线程上的同步请求已被弃用。我对此表示怀疑,但您的请求被强制异步的可能性很小。
  • 在我的服务器上测试这个时,我只得到一个“ok”和“200”的 statustext en 状态。虽然我为 config.xml 找到了一件事,如果我尝试更改platforms\android\res\xml 中的访问源,它将返回到本地主机。现在里面有 2 个,如果我删除或更改它,它会在构建过程后立即返回。
  • 您应该修改项目根目录下的config.xml中的访问来源(或在www中取决于cordova的版本),然后在构建项目时,会自动对文件平台/android/res/config.xml。你是对的,不需要像这个答案中建议的那样将 CORS 标头添加到 php 中。
  • 但是关于异步/同步的评论 +1,你真的应该改变你的代码来使用异步调用和回调。
猜你喜欢
  • 2021-02-26
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多