当前位置: 首页 > 面试题库 >

PhoneGap Ajax调用每次都会失败

笪德华
2023-03-14
问题内容

我正在使用 PhoneGap 开发移动应用程序,并且必须 从另一个项目 访问某些 服务 。我正在使用
jquery-2.0.0.jsjquery-mobile-1.3.2.js

$.ajax({
            url: 'http://localhost:62465/api/account?email=johndoe@yahoo.com',
            dataType: 'json',
            success: function (data) {
                alert(data.Name);
            },
            error: function (xhr, type) {
                alert("Failed to load data");
                alert(xhr + " " + type);
            }
});

这个ajax调用每次都会失败。在 config.xml中, 我有以下几行:<access origin="*" />

我可能在哪里错了!


问题答案:

问题在于您的phonegap应用程序正在从非网络服务器请求本地文件。本地文件交付时没有HTTP头-这意味着没有“ 200 OK”头,也没有“ 404 Not
Found”错误。因此,假定状态码为0。

直接的javascript XHR将需要忽略状态并在readystate == 4(完成并准备就绪)上执行操作。像这样:

    var myrequest = new XMLHttpRequest();
    myrequest.open('GET','localfile.html');
    myrequest.onreadystatechange = function(){
        if(myrequest.readyState == 4) {
            var result = myrequest.responseText;
        }
    }
    myrequest.send();

在MooTools中,在Request类中实现更改后的状态测试是一项相对简单的任务-将返回码测试更改为也接受0表示为true。像这样:

Request.implement({
    isSuccess: function(){
        var status = this.status;
        return ((status >= 200 && status < 300) || status === 0);
    }
});

jQuery ....关于jQuery,我想谈一谈-但我会坚持,因为这似乎是一个优雅的地方。

要为状态== 0准备jQuery,您需要使用always事件而不是success事件,您可以在那里测试状态代码。

$.ajax({
   url: '/echo/html/',
   type: 'PUT',
   data: "email=a@b.com"
 }).always(function(data, textStatus, jqXHR){
   switch(textStatus) {
     case 200:
         case 0:
         alert('Success.');
             break;
         case 404:
             alert('oops');
             break;
   }
 });

Cordova / Phonegap中的Ajax-是的!



 类似资料:
  • 问题内容: 每次调用时,React都会重新渲染所有组件和子组件吗? 如果是这样,为什么?我以为这个想法是,当状态改变时,React只渲染所需的内容。 在下面的简单示例中,尽管onClick处理程序始终将设置为相同的值,但是在随后的单击中状态不会改变,这两个类在单击文本时都再次呈现。 我曾希望只有在数据更改的情况下才会进行渲染。 这是示例代码,例如JS Fiddle和嵌入式代码段: 问题答案: 每次

  • 目前,正在尝试在Azure Devops中配置发布管道。我已成功创建了一个CI管道,该管道正在工作并成功运行测试。我的发布管道使用来自最新CI构建的工件,应该部署到azure。当我查看日志时,我可以看到以下内容已成功完成: 初始化代理 初始化作业 下载arifact 然后"部署到Azure应用服务"失败,日志显示以下详细信息: 到目前为止,我还没有找到什么可以帮上忙的。我通过从pipline的第1

  • 我正在为Kafka的客户librdkafka工作。lib在这里https://github.com/edenhill/librdkafka/blob/master/examples/rdkafka_example.cpp.每次调用Producer类中的product()时,是否调用dr\u cb()函数(请参见以下代码)?

  • 环境为Windows 7 64位,atom 1.0.5 atom可以正常使用,但不能安装任何软件包。 错误信息: 输出:

  • 该项目有JPA的Spring Boot。我们有一辆有100万条记录的台式车。表具有索引字段类型。 我们有一个用例,我们希望按类型获取所有记录。对于每种类型,我们都会得到所有的车辆记录,然后是下一种类型,然后是下一种,依此类推。 由于有100万条记录,我们将获取每种类型的记录,批量大小为1000。我们还应用了一个类型为column的过滤器。 汽车仓库。JAVA 车辆服务。JAVA 为了理解,假设有5

  • 当我使用扫描仪或尝试获取用户输入时,我得到消息: 失败:生成失败,出现异常。 > 出错了:任务“:run”的执行失败。 处理“命令”C:\ProgramFiles\Java\jdk-13.0.1\bin\Java。exe“”以非零退出值1结束 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。运行--scan以获得完整的见解。 在