【问题标题】:PhoneGap plist: Can External host be set to ip address?PhoneGap plist:可以将外部主机设置为IP地址吗?
【发布时间】:2012-02-17 16:33:57
【问题描述】:

刚刚开始在 Mac 上进行 PhoneGap 开发。我有一个托管在没有分配 DNS 的服务器上的 .NET 服务。我可以使用phonegap.plist 中的IP 地址吗?我的代码可以在浏览器中运行,甚至可以作为实际 iPhone 上的网络版本运行。当我从 xcode 编译时,它似乎无法正常工作(甚至在模拟器上也没有)。我通过 lint 运行了这个 js,现在我遇到了麻烦……这就是我想要做的。

我在按钮点击时调用 GetEstimate:

function GetEstimate(From, To) {
"use strict";
varType    = "GET";
varUrl     = "http://xx.xxx.xxx.xx/service.svc/" + 
"GetBasicEst?pickupPostalCode="+ From + "&dropoffPostalCode="+ To +"";
varContentType    = "application/json; charset=utf-8";
varDataType = "jsonp";
varProcessData = true;
alert("GetEstimate");
new CallService();}

function CallService(){
alert("Inside Call Service");
"use strict";
$.ajax({
       type          : varType, //GET or POST or PUT or DELETE verb
       url           : varUrl, // Location of the service
       data          : varData, //Data sent to server
       contentType   : varContentType, // content type sent to server
       dataType      : varDataType, //Expected data format from server
       processdata   : varProcessData, //True or False
       success       : function(data) {//On Successfull service call
       alert("Success");
       var innerHtml = "";
       var rhigh=data.EstimateHigh;
       var rlow=data.EstimateLow;
       alert(rlow);
       $("#rHigh").html(rhigh);
       $("#rLow").html(rlow);                       
       $("#rHigh").formatCurrency();
       $("#rLow").formatCurrency();                 
       },
       //error: ServiceFailed // When Service call fails
       });}

CallService 中的警报确实触发了,然后它似乎就停在那里...不调用 $.ajax(

我可能会在左场出路,所以任何建议都会有所帮助。

【问题讨论】:

    标签: cordova jquery-mobile mobile


    【解决方案1】:

    再次查看您的代码后,问题就来了。因此,您始终需要将您的域列入白名单,但除此之外,请确保您的 ajax 被正确调用。

    您正在梳理 url 和数据,它们需要是单独的东西。您可以调用 varData,但您没有在任何地方创建它。

    function GetEstimate(From, To) {
    "use strict";
    varType    = "GET";
    varUrl     = "http://xx.xxx.xxx.xx/service.svc/GetBasicEst";
    
    // YOUR DATA
    varData = "pickupPostalCode="+ From + "&dropoffPostalCode="+ To;
    
    varContentType    = "application/json; charset=utf-8";
    varDataType = "jsonp";
    varProcessData = true;
    alert("GetEstimate");
    new CallService();}
    
    function CallService(){
    alert("Inside Call Service");
    "use strict";
    $.ajax({
           type          : varType, //GET or POST or PUT or DELETE verb
           url           : varUrl, // Location of the service
           data          : varData, //Data sent to server
           contentType   : varContentType, // content type sent to server
           dataType      : varDataType, //Expected data format from server
           processdata   : varProcessData, //True or False
           success       : function(data) {//On Successfull service call
           alert("Success");
           var innerHtml = "";
           var rhigh=data.EstimateHigh;
           var rlow=data.EstimateLow;
           alert(rlow);
           $("#rHigh").html(rhigh);
           $("#rLow").html(rlow);                       
           $("#rHigh").formatCurrency();
           $("#rLow").formatCurrency();                 
           },
           //error: ServiceFailed // When Service call fails
           });}
    

    试一试,希望对您有所帮助!

    【讨论】:

    • 好吧,那是不行的。很好的捕捉,对我来说很愚蠢,但它总是在浏览器测试中正常工作。你的建议在浏览器测试中仍然有效,所以我更好,但仍然不能在 iphone 上工作。感谢您在这方面的时间。这是我第一次尝试这个phonegap。我得到了一些很棒的东西,但这是我的应用程序和未来应用程序的全部关键。这真的很糟糕,因为我什至不知道如何尝试解决这个问题。
    • 所以我想知道您是否可以将 $.ajax() 与 Phone Gap 一起使用。我找到了这个link。我可以尝试这样写。看起来它仍然应该像我写的那样工作。
    • 你完全可以在我制作的每个 phonegap 应用程序中使用它,它是我框架的一部分。该链接中的这种方式是使用javascript ajax,非常相似。老实说,您的问题的答案将非常小。我会查看您的代码,也许会尝试更简单的代码,直到您看到它......在这种情况下,它可能是一个 misplaced 、一个杂散字符或拼写错误。
    • 我是我.....这可能是由于我的服务。就像我提到的那样,它在 Mac 上的 Chrome 中完美运行……甚至是 safari。它不适用于 Iphone 或 Iphone Emulator。还有什么建议。我在这里的边缘。为什么它在浏览器中工作????不是手机吗??????呸呸呸
    • 我明白了!德鲁:我把你关于*的回答标记为正确。谢谢你。我尝试了一些方法来让它工作,所以我会列出我做了什么。我将 IP 更改为 dns 解析名称,我将 Ip 从 Phonegap.plist 中取出,所以只有 * 在那里。然后我在 ajax 调用 jsonp 中添加了一行代码:'callback'。不知道是哪一个做的,但它现在可以工作了。
    【解决方案2】:

    我明白了!!德鲁:我把你关于*的回答标记为正确。谢谢你。我尝试了一些方法来让它工作,所以我会列出我做了什么。我将 IP 更改为 dns 解析名称,我将 Ip 从 Phonegap.plist 中取出,所以只有 * 在那里。然后我在 ajax 调用 jsonp 中添加了一行代码:'callback'。不知道是哪一个做的,但它现在可以工作了。

    【讨论】:

      【解决方案3】:

      只需在您的 plist 中添加一个新条目,并将值设为 *。这是所有领域的全部内容。 :)

      【讨论】:

      • 这就是我为自己的项目所做的,但我想知道这样做是否存在任何安全问题?有什么想法吗?
      • 不,你应该没问题! plist 只需要知道可以连接到该 IP 就可以了
      • 好的,我改成了 * 但代码似乎仍然不起作用。就像我提到的那样,它到达了 $.ajax( 并且似乎停止了。我在 $.ajax 功能的两侧都做了警报。任何建议都会很棒。感谢 Drew 的建议。
      • 你确认你已经定义了你的变量吗?像varType之类的?
      • 是的,它们都定义在我的 .js 文件的顶部。从浏览器运行时它会完美运行,这很奇怪。
      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多