使用 Phonegap 应用程序执行 ajax 请求时出现问题

2023-12-30

我正在尝试使用 Phonegap 和 jQuery 创建一个简单的 RSS 阅读器。 我正在关注这个教程:http://visualrinse.com/2008/09/24/how-to-build-a-simple-rss-reader-with-jquery/ http://visualrinse.com/2008/09/24/how-to-build-a-simple-rss-reader-with-jquery/.

当我在浏览器中尝试代码时,我已经成功地使其工作正常。php 文件获取提要并输出它,就像我期望的那样。但是当我从编译的 Phonegap 应用程序中运行相同的文件时,ajax 请求仅返回 php 文件的内容(php代码,不是执行结果)。

我花了几个小时在谷歌上搜索这个并尝试了许多教程和调整。我在Phonegap官方论坛也没有找到解决方案。我究竟做错了什么?问题似乎是 PHP 没有响应请求。我尝试将 php 文件移动到不同的域,但结果是相同的,它在我的浏览器中有效,但在编译的应用程序中无效。

下面是启动 ajax 代码的 jQuery 代码:

function get_rss_feed() {
    //clear the content in the div for the next feed.
    $("#feed_content").empty().html('<img class="loader" src="js/images/ajax-loader.gif" alt=""/>');

    $.ajax({
        url: 'http://192.168.1.7/rssApp/www/rss-proxy.php?url=http://www.nytimes.com/services/xml/rss/nyt/GlobalHome.xml',
        success: function parseRSS(d) {

        //find each 'item' in the file and parse it
        $(d).find('item').each(function() {

            //name the current found item this for this particular loop run
            var $item = $(this);
            // grab the post title
            var title = $item.find('title').text();
            // grab the post's URL
            var link = $item.find('link').text();
            // next, the description
            var description = $item.find('description').text();
            //don't forget the pubdate
            var pubDate = $item.find('pubDate').text();

            // now create a var 'html' to store the markup we're using to output the feed to the browser window
            var html = "<div class=\"entry\"><h2 class=\"postTitle\">" + title + "<\/h2>";
            html += "<em class=\"date\">" + pubDate + "</em>";
            html += "<p class=\"description\">" + description + "</p>";
            html += "<a href=\"" + link + "\" target=\"_blank\">Read More >><\/a><\/div>";

            //put that feed content on the screen!
            $('#feed_content').append($(html));
        });
        $('#feed_content img.loader').fadeOut();
    }

    });

};

这是rss-proxy.php从 url 加载 XML 并输出它:

<?php
    // PHP Proxy
    // Loads a XML from any location. Used with Flash/Flex apps to bypass security restrictions
    // Author: Paulo Fierro
    // January 29, 2006
    // usage: proxy.php?url=http://mysite.com/myxml.xml

    $session = curl_init($_GET['url']);                    // Open the Curl session
    curl_setopt($session, CURLOPT_HEADER, false);          // Don't return HTTP headers
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);   // Do return the contents of the call
    $xml = curl_exec($session);                            // Make the call
    header("Content-Type: text/xml");                  // Set the content type appropriately
    echo $xml;        // Spit out the xml
    curl_close($session); // And close the session
?>

我终于成功解决了这个问题!事实证明,如果您想向某个域(无论是您的本地主机还是其他域)发出请求,则需要将您希望从 Xcode 中的 PhoneGap 应用程序请求的服务器列入白名单。 我之前没有发现这一点的原因是我没有检查ajax响应中的错误。一旦我这样做了,我就得到了http状态代码401(未经授权)和错误消息“Whitelist rejected".

为了解决这个问题,我打开了文件PhoneGap.plist在我的项目中并在密钥下ExternalHosts我添加了一个新项目,其值为:*.localhost。 我还将 ajax url 更改为:

url: 'http://localhost/rssApp/www/rss-proxy.php?url=http://www.nytimes.com/services/xml/rss/nyt/GlobalHome.xml'

我在 iOS 模拟器上编译并运行了该应用程序,我的本地主机服务器响应了完美成功的 ajax 响应!

对于您希望应用程序连接到的每个外部主机,您必须将其添加到列表中ExternalHosts。例如,如果您希望访问 APIhttp://google.com/maps/api.php http://google.com/maps/api.php你必须添加*.google.com到您的清单。

当您试图找出服务器没有响应的原因时,这有点烦人,但我认为出于安全原因这很有好处。希望这可以帮助那些在 PhoneGap 应用程序中处理简单的 ajax 请求时遇到困难的人!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Phonegap 应用程序执行 ajax 请求时出现问题 的相关文章

  • 使用 jQuery 清除 IMG

    我正在尝试从 a 中删除加载的图像 img 元素 但清除或删除 src 不会执行此操作 该怎么办 HTML img src https www google com images srpr logo3w png JQUERY img att
  • 未传递“client_reference_id”参数

    我使用 Stripe Checkout Stripe 版本 2016 07 06 我想通过参数 client reference id 恢复个性化数据 但在 JSON 中 当我有金额或电子邮件时 我找不到它 我是在测试环境中 你能帮我吗 先
  • 编辑 HTACCESS 文件以防止直接访问特定文件夹中的特定文件

    我试图阻止直接访问子文件夹中的特定文件 我意识到这个论坛上有很多描述类似问题的主题 但是 我的似乎有点尴尬 由于我已经存在 HTACCESS 文件 这是文件的文件路径 www example com PRINCIPAL PROJECTS m
  • 如何在HTML中的PHP中注释掉HTML和PHP?

    这是我想注释掉的一行代码 h1 class post title a href title a h1 一种流行的注释方法是分别注释 html 和 php 有一个更好的方法吗
  • 取消html5浏览器中的单图请求

    我正在动态加载 大 图像以绘制到 html5 画布中 如下所示 var t new Image t onload t src http myurl 但每隔一段时间就会想取消图片请求完全地 我想出的唯一方法是设置src to i e t sr
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • 无法将数据加载到 mvc 4 中的 jTable 中

    好的 我第一次尝试 jTable 我可以加载表 但这对我没有什么好处 因为它不会加载我的任何数据 当我调试程序时 我想要的表中的所有行都存储在我的列表中 因此我很困惑为什么当我运行应用程序时会弹出一个对话框 显示 与服务器通信时发生错误 H
  • 如何在多次尝试后延迟登录尝试 (PHP)

    我正在开发一个用 PHP 构建的相当大的网站 该网站可能会有很多用户 我正在寻找一种方法来保护登录屏幕免受自动尝试的影响 我已经在注册表中添加了验证码检查 但还想进一步强化网站 据我所知 StackOverflow 上也有类似的问题 而且我
  • WordPress 包含 SVG 文件错误

    我使用 PHP 和 WordPress 在本地主机上 我可以毫无问题地包含 SVG 文件 但在实时服务器上 我尝试包含一个 SVG 文件以便能够使用 CSS 对其进行样式设置 我收到此错误消息 Parse error syntax erro
  • jQuery 插件不能很好地与 Angularjs 配合使用

    我用过jQuery 滑块在我的项目中 我使用 Angular 加载图像 我目前的观点是这样的 div div class slides container a href img width 919 height 326 alt a div
  • jquery 验证错误位置

    这看起来很简单 但我无法弄清楚 我正在使用 jquery 验证插件 我验证所有文件 但我想要的是在输入文本行中显示验证消息警报 例如在电子邮件输入中 请填写电子邮件地址 但现在它出现在所有字段下 在我的html中
  • 如何处理 ASP.net MVC Ajax 加载页面上的 jQuery 事件?

    我有一个问题 我是 jQuery Mobile 领域的新手 对于 ASP Net MVC 部分我有点迷失 这是我的问题 在我的移动网站中 我想更改导航栏 我使用的更像是应用程序栏 按钮 而我位于编辑页面或主页等 因此 这些页面 编辑 显示
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • JQuery 验证在 IE8 中不起作用

    我使用 JQuery 验证脚本来验证 HTML 表单 这在 Firefox 中完美运行 但在 IE8 中不起作用 我认为冒号 或分号 有问题 但我无法抓住它 jQuery validator addMethod selectNone fun
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量
  • 如何使用 php 在 sql 查询中转义引号?

    我有一个疑问 sql SELECT CustomerID FROM tblCustomer WHERE EmailAddress addslashes POST username AND Password addslashes POST p
  • :jQuery / Sizzle 中的 nth-of-type()?

    让我惊讶的是Sizzle http sizzlejs com jQuery 使用的选择器引擎 带有一个内置的 nth child 选择器 但缺少 nth of type 选择器 为了说明之间的区别 nth child and nth of
  • Stream_context_set_params 不适用于 ssh2.sftp 包装器

    我想使用类似的功能here http www php net manual en function stream notification callback php 请检查以下代码 function notify notification

随机推荐

  • 将本地文件中的 json 数据加载到 React JS 中

    我有一个 React 组件 我想从文件加载 JSON 数据 即使我正在创建变量 控制台日志当前也不起作用data作为全球 use strict var React require react addons load in JSON data
  • Git bash 显示了 ed25519 密钥而不是 rsa 密钥指纹

    我尝试了设置 GitHub SSH 密钥的教程 但是当我输入提示时 它显示的是 ed25519 而不是 rsa 密钥指纹 有关如何添加 rsa 密钥指纹的任何指示吗 ED25519 key fingerprint is 这与您无关id rs
  • 可以使用不同的路径/通配符定义snakemake输入规则吗

    我想知道是否可以定义一个依赖于不同通配符的输入规则 详细地说 我使用 qsub 在不同的 fastq 文件上运行这个 Snakemake 管道 它将每个作业提交到不同的节点 原始 fastq 上的 fastqc 不依赖其他作业的下游 适配器
  • 从 @ElementCollection 中搜索对象

    我正在使用 Spring Data JPA 我是这样的一个实体 public class A CollectionTable name B ITEMS joinColumns JoinColumn name B ID ElementColl
  • 是否可以在支持 Intel IA-32e 模式的操作系统中运行 16 位代码?

    在 Intel 64 IA 32 架构手册第 3A 卷第 9 章处理器管理和初始化中 我发现了以下内容 兼容模式执行是基于代码段选择的 此模式允许旧应用程序与以 64 位模式运行的 64 位应用程序共存 在 IA 32e 模式下运行的操作系
  • 授权策略始终返回 403(禁止)-MVC/API

    我创建了一个 API 带有 EF Core 的 Net Core 2 其端点用于检索某些角色 我将 ASPNetIdentity 集成到我的项目中 并使用 AspNetRoles 和 AspNetRoleClaims 在我的例子中 调用 A
  • 当我们不关心结果时异步 URLfetch? [Python]

    在我为 GAE 编写的一些代码中 我需要定期对另一个系统上的 URL 执行 GET 本质上是 ping 它 并且我不太关心请求是否失败 超时或成功 因为我基本上想要 即发即忘 而不是通过等待请求来减慢我自己的代码速度 所以我使用异步 url
  • 在 asp.net 应用程序中将自动生成的 pdf 附加到电子邮件

    我有一个非常具体的要求 在我的网络应用程序中 我必须根据数据库值和电子邮件正文生成 pdf 发票 我可以使用 SMTP 轻松发送此信息 效果非常好 但是 问题是我们不能依赖系统总是完美的 而这是一张发票 所以 我们需要打开默认的邮件客户端而
  • 更改 DialogFragment 中 ProgressDialog 的字体

    我想知道是否可以更改字体ProgressDialog的消息显示 内DialogFragment public class LoadFromCloudTaskFragment extends DialogFragment Override p
  • 如何在通话开始时播放音频文件?

    我正在从我的应用程序发起语音呼叫 现在我希望当另一端的用户接听电话时 我想播放录制的音频文件 这件事该怎么办呢 请帮忙 我已经找到了解决方法 当手机状态变为TelephonyManager CALL STATE OFFHOOK 这可确保另一
  • Rails 4 中的 Jquery 文件上传

    大家好 我正在关注 Jquery 文件上传的视频教程 http railscasts com episodes 381 jquery file upload http railscasts com episodes 381 jquery f
  • 获取列表中的所有递归结果

    我正在学习 python 递归 为了练习 我给出了一个任务来查找列表的所有子集 例如函数 subset 1 2 should return 1 2 1 2 我可以让我的函数在递归的帮助下打印这些结果 def subset List prin
  • Basler Pylon 4 SDK 和 OPENCV 2.4.9,CPylonImage 到 Mat

    我目前正在使用 Basler 相机 acA1300 30gc 开发机器视觉应用程序 为此 我正在使用 Basler Pylon 4 和 OPENCV 版本 2 4 9 但出现了一些问题 我正在尝试使用 Pylon SDK 捕获图像并将其转换
  • 获取当前活动的应用程序名称

    我想在计时器停止时获取当前活动应用程序的名称 记录 20 秒后 它应该显示当前活动的应用程序名称 我尝试了一些代码 你可以在这里看到 但计时器停止后它没有向我显示任何内容 C code public class Win32wrapper p
  • MediaPlayer 中的 IllegalStateException

    这是我的代码 if player null if player isPlaying player pause player stop player release 这是错误 FATAL EXCEPTION main java lang Il
  • Firebase 数据库每次读取时都返回 null

    我有一个类从数据库读取数据 但它总是返回null 这是java文件 public class UserActivity extends AppCompatActivity TextView textView private Firebase
  • 通过重定向进行基本身份验证

    我有一个需要基本身份验证标头的网络服务 但是 当我使用它来调用它时 var header Authorization Basic CreateBasicHttpAuthenticationHeader login password webR
  • 打乱已排序的数组

    如果给定一个已排序的数组 我们可以使用什么算法来创建一个与已排序数组具有相同元素的输出数组 但元素应该随机打乱 我正在寻找一种复杂度为 O n 的算法 Collections shuffle List has an O n 时间复杂度 您可
  • 如何在 Docker 容器中运行 Python Flask [重复]

    这个问题在这里已经有答案了 我正在尝试在 docker 容器内运行 Python Flask Web 服务器 但无法从外部连接到 Flask 服务器 我做了什么 我创建 temp HelloFlask py from flask impor
  • 使用 Phonegap 应用程序执行 ajax 请求时出现问题

    我正在尝试使用 Phonegap 和 jQuery 创建一个简单的 RSS 阅读器 我正在关注这个教程 http visualrinse com 2008 09 24 how to build a simple rss reader wit