2013-03-28 10 views
5

ciao sto sviluppando un'app per Android (uso phonegap, html5 e javascript) che si collegano a un database mysql remoto. ho creato un servizio web RESTful (codeigniter) per accedere al database mysql, quindi l'app Android può chiamare il servizio web per ottenere o inviare dati al db, usando XML o JSON come formato dei dati.ottiene i dati dal server con jquery ajax in Android PhoneGap

Nel browser Web utilizzando jquery ajax sto ottenendo con successo il risultato ma nell'app Android non ricevo la risposta.

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

nel 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); 
     } 
+0

Non vedo alcun codice Android qui ...? – Tushar

+0

ups mi dispiace usare phonegap, html5 e javascript per lo sviluppo di app android – Aditya

risposta

5

Avete aggiunto un'origine accesso con l'indirizzo IP specificato nella richiesta Ajax? Questo file si trova nell'applicazione-dir/res/xml/config.xml localhost è consentito per impostazione predefinita, ma è necessario aggiungere altri host quando si utilizza. Così il vostro Config.xml dovrebbe assomigliare a questa

<?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> 
+0

wow grazie al suo lavoro ... – Aditya

+0

Sembra che Phoneon abbia iniziato a prestare attenzione a questa impostazione solo dopo la versione 2.3.0. Ho avuto le voci specificate da josh ma incluso un errore di ortografia nel nome del dominio. Tutto ha funzionato bene con Cordova/PhoneGap 2.3.0. Quando eseguivo l'aggiornamento alla V2.7.0, AJAX chiamava la funzione di successo, tuttavia la risposta era sempre nullo. Quando ho corretto l'errore di ortografia, il bingo ha funzionato di nuovo. Ho trovato che l'elemento "sottodomini" = "true" è particolarmente utile in quanto dobbiamo consentire il nome del dominio con o senza "www" come suggerito nei commenti. –

0

<access origin=".*"/> non ha ancora lavorato a tutti, dobbiamo mettere URL specifico che chiamiamo durante la richiesta Ajax.

<access origin="http://10.10.1.129"/> ha funzionato.

Problemi correlati