让 AJAX 在 PhoneGap 中工作

Posted

技术标签:

【中文标题】让 AJAX 在 PhoneGap 中工作【英文标题】:Getting AJAX to work in PhoneGap 【发布时间】:2013-11-09 06:33:42 【问题描述】:

现在我需要使用 phonegap 调用另一个网络服务器上的 php 脚本来从我拥有的数据库中检索数据。使用硬代码运行脚本可以正确检索数据,但它显示为 ajax 调用没有返回任何内容,或者甚至没有将数据作为 post 获取。目前在控制台中我收到"Origin null is not allowed by Access-Control-Allow-Origin. "

    $(document).ready(function()       
       $('.check').click(function()
       alert("Step1");
       var thisID    = $(this).attr('id');
       alert(thisID);

       $.ajax(
           type: "POST",
           url: "http://csmaster.sxu.edu/group2/group2/CougarLunch/retrieveColumn.php",
           data:  ID: thisID,
           cache: false,
           async:true,
           datatype: "json",
           success: function(data)
               
             console.log(data);
             alert(data.ItemID);
              

          );
          ); 
          );

PHP 如果它是相关的,我对此表示怀疑

    if(isset($_POST['ID']))
      
       $ID = $_POST['ID'];
       function retrieve($ID)
         
          $stmt = $mysqli->query("SELECT * FROM  group2.menu  WHERE ItemID = $ID");

          if($stmt->num_rows) //if there is an ID of this name
              
              $row = $stmt->fetch_assoc();
              echo $row;
              print json_encode($row);  

           
        

【问题讨论】:

当它是手机上的实际应用时,你不应该受到跨域策略的限制。 1 为什么会这样? 2. 当我在 chrome 中启动它时它已经无法正常工作,所以我对此表示怀疑。 查看这些问题:***.com/questions/11641442/…***.com/questions/13920782/…***.com/questions/15363005/… 您是否在 phonegap 配置中将域列入白名单? 请注意此代码header("Access-Control-Allow-Origin: "*");,因为它本质上会打开您的 PHP 文件,以完全由任何 AJAX 请求运行,因此理论上我可以从我的网站向您的网站编写 AJAX 调用,并且访问该 URL 上可用的任何数据。我建议搞乱console.log(document.URL);,看看是否可以缩小PhoneGap 可能模拟的URL/域。从不同的手机、桌子、网络、wifi 开/关等尝试。 【参考方案1】:

将此行添加到 php 文件的顶部以允许访问:

 header("Access-Control-Allow-Origin: "*");

【讨论】:

【参考方案2】:

需要传入androidManifest.xml

<access origin="*" />

phonegap doc

【讨论】:

以上是关于让 AJAX 在 PhoneGap 中工作的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap android ajax调用在浏览器中工作,而不是在移动设备上

逐步让 Google Analytics 在 iOS 上的 PhoneGap 1.2.0 中工作(phonegapalytics)

如何让 Parse.com 推送通知在 Cordova/Phonegap Android 应用程序中工作?

如何使splashscreenimage在ios phonegap应用程序中工作?

让 hashchange 事件在所有浏览器(包括 IE7)中工作

通过 ajax 将变量发布到 mysql db - phonegap