6

こんにちは、リモートのmysqlデータベースに接続するAndroid用のアプリ(phonegap、html5、およびjavascriptを使用)を開発しています。mysql データベースにアクセスするための RESTful (codeigniter) Web サービスを作成すると、Android アプリは Web サービスを呼び出して、データの形式として XML または JSON を使用して、データベースにデータを取得または投稿できます。

jquery ajaxを使用するWebブラウザでは、結果を正常に取得していますが、Androidアプリでは応答が得られません。

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);
    }  
});

サーバー内:

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);
        }
4

2 に答える 2

5

ajaxリクエストで指定したIPアドレスでアクセス元を追加していますか? このファイルは application-dir/res/xml/config.xml にあります。デフォルトでは localhost が許可されていますが、使用する場合は他のホストを追加する必要があります。したがって、config.xml は次のようになります。

<?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>
于 2013-03-28T08:14:32.800 に答える
0

<access origin=".*"/>まったく機能しませんでした。ajax リクエスト中に呼び出す特定の URL を入力する必要があります。

<access origin="http://10.10.1.129"/>これはうまくいきました。

于 2015-09-15T06:17:41.587 に答える