从服务器数据与安卓的PhoneGap jQuery的AJAX [英] get data from server with jquery ajax in android phonegap

查看:136
本文介绍了从服务器数据与安卓的PhoneGap jQuery的AJAX的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好我为Android开发的应用程序(使用的PhoneGap,HTML5和JavaScript),这本身连接到远程MySQL数据库。 我创建了一个基于REST(codeigniter)的Web服务来访问mysql数据库,那么Android应用程序可以调用Web服务来获取或发布数据到数据库,使用XML或JSON作为数据格式。

在使用jQuery AJAX我成功地得到结果,但在Android应用程序没有得到响应的网页浏览器。

  jQuery.ajax({
网址:'http://10.10.1.129/index.php/apiauth/auth/?'+jQ​​uery(#表单登录).serialize()
异步:真正的,
缓存:假的,
/ *跨域:真正的,* /
数据类型:JSONP,
成功:功能(数据){
    警报(数据);
    }
});
 

在服务器:

 要求APPPATH/库/ REST_Controller.php。
    类Apiauth扩展REST_Controller
    {
        功能auth_get()
        {
            $这个 - >负载>模型('mauth');
            $ USERNAME = $这个 - >输入 - >获得(用户名)? $这个 - >输入 - >获得(用户名)函数:$ this->获得(用户名);
            $密码= $这个 - >输入 - >获得('密码')? $这个 - >输入 - >获得('密码')函数:$ this->获得('密码');
            $ AUTH = $这个 - > mauth-> getUserLogin(*​​,$用户名,密码$)
            $行= $ auth->行();
            如果($行){
                $数据=阵列(用户名=> $行向>的用户名,全名=> $行向>全名,'错误'=> FALSE);
            }其他{
                $数据=阵列('错误'=>真正的);
            }
            $这个 - >响应($的数据,200);
        }
 

解决方案

你添加一个访问的起源与Ajax请求指定的IP地址?该文件位于您的应用程序目录/ RES / XML / config.xml中允许localhost在默认情况下,但你需要的时候使用添加其他主机。所以,你的config.xml文件看起来应该是这样

 < XML版本=1.0编码=UTF-8&GT?;
<! - 
       授权给下一个Apache软件基金会(ASF)
       以上contributor许可证协议。请参阅通知文件
       分布式与此工作的其他信息
       关于版权的所有权。该asf文件许可证
       你Apache许可证下,2.0版(中
       许可);你可能不使用这个文件除了在合规
       该许可。您可以在获得许可证的副本

         http://www.apache.org/licenses/LICENSE-2.0

       除非适用法律要求或书面同意,
       软件许可证下发布分布在一个
       按原样的基础,没有担保或任何条件
       善良,无论是EX preSS或暗示的保证。查看许可证的
       特定语言的管理许可和限制
       在许可。
 - >
<科尔多瓦>
    <! - 
    访问内容控制Android的白名单。
    域名被认为阻止,除非另外设定
      - >

    <获得原产地=HTTP://127.0.0.1*/> <! - 让当地的网页 - >
    <获得原产地=HTTP://10.10.1.129*/> <! - 允许从服务器请求 - >


    <! - <获得原产地=htt​​ps://example.com/>允许example.com任何安全要求 - >
    <! - <获得原产地=htt​​ps://example.com子域=真/>如上述,但包括子域,诸如万维网 - >
    <*获得原产地= />

    <日志级别=DEBUG/>
    < preference名=useBrowserHistory值=FALSE/>
<插件>
    <插件名称=APP值=org.apache.cordova.App/>
    <插件名称=地理位置值=org.apache.cordova.GeoBroker/>
    <插件名称=设备值=org.apache.cordova.Device/>
    <插件名称=加速度值=org.apache.cordova.AccelListener/>
    <插件名称=北斗值=org.apache.cordova.CompassListener/>
    <插件名称=媒体的价值=org.apache.cordova.AudioHandler/>
    <插件名称=数码相机值=org.apache.cordova.CameraLauncher/>
    <插件名称=联系人值=org.apache.cordova.ContactManager/>
    <插件名称=文件值=org.apache.cordova.FileUtils/>
    <插件名称=NetworkStatus值=org.apache.cordova.NetworkManager/>
    <插件名称=通知的价值=org.apache.cordova.Notification/>
    <插件名称=存储值=org.apache.cordova.Storage/>
    <插件名称=温度值=org.apache.cordova.TempListener/>
    <插件名称=文件传输值=org.apache.cordova.FileTransfer/>
    <插件名称=捕捉值=org.apache.cordova.Capture/>
    <插件名称=电池值=org.apache.cordova.BatteryListener/>
    <插件名称=闪屏的价值=org.apache.cordova.SplashScreen/>
< /插件>
< /科尔多瓦>
 

hi i am developing an app for android (use phonegap, html5 and javascript) which connect itself to a remote mysql-database. i created a RESTful (codeigniter) web services to access the mysql database, then the Android app can call the web service to get or post data to the db, using XML or JSON as the format of data.

In web browser using jquery ajax I am succesfully getting the result but in android app not getting the response.

jQuery.ajax({
url : 'http://10.10.1.129/index.php/apiauth/auth/?'+jQuery("#form-login").serialize(),
async :true,
cache :false,
/*crossDomain : true,*/
dataType : 'jsonp',
success:function(data){
    alert(data);
    }  
});

in server :

require APPPATH.'/libraries/REST_Controller.php';
    class Apiauth extends REST_Controller
    {
        function auth_get()
        {
            $this->load->model('mauth');
            $username   = $this->input->get('username') ? $this->input->get('username') : $this->get('username');
            $password   = $this->input->get('password') ? $this->input->get('password') : $this->get('password');
            $auth       = $this->mauth->getUserLogin('*',$username,$password);
            $row        = $auth->row();
            if($row){
                $data   = array('username'=>$row->username, 'fullname'=>$row->fullname,'error'=>FALSE);
            }else{
                $data   = array('error'=>true);
            }
            $this->response($data, 200);
        }

解决方案

Have you added an access origin with the ip address specified in the ajax request? This file is located in your application-dir/res/xml/config.xml localhost is allowed by default but you need to add other hosts when using. So your config.xml should look like this

<?xml version="1.0" encoding="utf-8"?>
<!--
       Licensed to the Apache Software Foundation (ASF) under one
       or more contributor license agreements.  See the NOTICE file
       distributed with this work for additional information
       regarding copyright ownership.  The ASF licenses this file
       to you under the Apache License, Version 2.0 (the
       "License"); you may not use this file except in compliance
       with the License.  You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing,
       software distributed under the License is distributed on an
       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
       KIND, either express or implied.  See the License for the
       specific language governing permissions and limitations
       under the License.
-->
<cordova>
    <!--
    access elements control the Android whitelist.
    Domains are assumed blocked unless set otherwise
     -->

    <access origin="http://127.0.0.1*"/> <!-- allow local pages -->
    <access origin="http://10.10.1.129*"/> <!-- allow requests from your server -->


    <!-- <access origin="https://example.com" /> allow any secure requests to example.com -->
    <!-- <access origin="https://example.com" subdomains="true" /> such as above, but including subdomains, such as www -->
    <access origin=".*"/>

    <log level="DEBUG"/>
    <preference name="useBrowserHistory" value="false" />
<plugins>
    <plugin name="App" value="org.apache.cordova.App"/>
    <plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/>
    <plugin name="Device" value="org.apache.cordova.Device"/>
    <plugin name="Accelerometer" value="org.apache.cordova.AccelListener"/>
    <plugin name="Compass" value="org.apache.cordova.CompassListener"/>
    <plugin name="Media" value="org.apache.cordova.AudioHandler"/>
    <plugin name="Camera" value="org.apache.cordova.CameraLauncher"/>
    <plugin name="Contacts" value="org.apache.cordova.ContactManager"/>
    <plugin name="File" value="org.apache.cordova.FileUtils"/>
    <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>
    <plugin name="Notification" value="org.apache.cordova.Notification"/>
    <plugin name="Storage" value="org.apache.cordova.Storage"/>
    <plugin name="Temperature" value="org.apache.cordova.TempListener"/>
    <plugin name="FileTransfer" value="org.apache.cordova.FileTransfer"/>
    <plugin name="Capture" value="org.apache.cordova.Capture"/>
    <plugin name="Battery" value="org.apache.cordova.BatteryListener"/>
    <plugin name="SplashScreen" value="org.apache.cordova.SplashScreen"/>
</plugins>
</cordova>

这篇关于从服务器数据与安卓的PhoneGap jQuery的AJAX的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆