2013-03-28 18 views
5

Hallo ich entwickle eine App für Android (Verwendung Phonegap, HTML5 und Javascript), die sich mit einer remote mysql-Datenbank verbinden. Ich habe einen RESTful (Codeigniter) -Webdienst für den Zugriff auf die MySQL-Datenbank erstellt. Dann kann die Android-App den Webservice aufrufen, um Daten in die Datenbank zu laden oder zu posten, wobei XML oder JSON als Datenformat verwendet wird.erhalten Daten vom Server mit jquery ajax in android phonegap

Im Webbrowser mit jquery ajax bin ich erfolgreich das Ergebnis, aber in Android App nicht die Antwort bekommen.

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

Ich sehe hier überhaupt keinen Android-Code ...? – Tushar

+0

ups tut mir leid, ich benutze phonegap, html5 und Javascript für die Entwicklung von Android-Apps – Aditya

Antwort

5

Haben Sie hinzugefügt einen Zugang Herkunft mit der IP-Adresse in der Ajax-Anforderung angegeben? Diese Datei befindet sich in Ihrem Anwendungsverzeichnis/res/xml/config.xml. Localhost ist standardmäßig erlaubt, aber Sie müssen bei der Verwendung andere Hosts hinzufügen. So sollte Ihr config.xml so aussehen

<?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 danke es ist Arbeit ... – Aditya

+0

Phonegap scheint erst nach Version 2.3.0 auf diese Einstellung aufmerksam zu sein. Ich hatte die Einträge von Josh angegeben, aber einen Schreibfehler in den Domänennamen enthalten. Alles hat unter Cordova/Phonegap 2.3.0 gut funktioniert. Wenn ich auf V2.7.0 aktualisiert habe, würde der AJAX die Erfolgsfunktion aufrufen, aber die Antwort war immer null. Als ich den Schreibfehler korrigierte - Bingo funktionierte alles wieder. Ich fand das subdomains = "true" -Element als besonders nützlich, da wir den Domänennamen mit oder ohne das "www" zulassen müssen, wie in den Kommentaren vorgeschlagen. –

0

<access origin=".*"/> nur knapp sein Ziel überhaupt gearbeitet, müssen wir bestimmte URL setzen, die wir während Ajax-Request aufrufen.

<access origin="http://10.10.1.129"/> dies funktioniert.

Verwandte Themen