2017-09-09 1 views
-4

J'ai une application cordova que je veux connecter à une base de données mysql distante. En fait, je veux insérer dans la base de données certaines données (par exemple un nom d'utilisateur). Pouvez-vous m'aider avec un exemple simple s'il vous plaît? J'ai lu tellement de choses sur internet, mais rien ne fonctionne sur Cordova. Je sais que je dois utiliser AJAX pour appeler un script php, et cela fonctionne très bien sur une simple application web, mais pas sur cordova. Pouvez-vous me donner un exemple de code s'il vous plaît? J'ai juste besoin de prendre la valeur (par exemple une chaîne) de l'entrée d'un formulaire et en soumettant pour stocker les données à la base de données mysql distante. Toute aide apprécie vraiment.comment se connecter à la base de données mysql distante depuis mon application cordova?

+1

Montrez-nous votre code, il devrait fonctionner tel qu'il est exactement le même. Vérifiez la console pour détecter d'éventuelles erreurs et vérifiez vos balises 'meta' car Cordova' index.html' par défaut empêche de nombreuses actions basées sur des requêtes pour des raisons de sécurité. – Script47

Répondre

0
<html> 
<head> 
    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;"> 
    <meta name="format-detection" content="telephone=no"> 
    <meta name="msapplication-tap-highlight" content="no"> 
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> 
    <link rel="stylesheet" type="text/css" href="css/index.css"> 
    <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.js"></script> 
    <link rel="stylesheet" href="js/libs/jqueryui/css/base/minified/jquery-ui.css" > 
    <script> 

    </script> 
</head> 
<body> 
    <div id="demo"></div> 
    <div data-role='page' id='UsersSignUp'> 
     <div data-role='header' class='ui-content'> 
      <h1>Sign up for free</h1> 
      <p>please fill out the form</p> 
     </div> 
     <div data-role='main' class='ui-content'> 
      <form id="signupForm"> 
       <input type='text' id='username' name='username'> 
       <input type='button' value='submit' class='blink' id="SignUpAjaxButton"> 
      </form> 
     </div> 
     <div data-role='footer'> 
      <p>&copy; OnLineGym.com</p> 
      <p>Created by <a href='mailto:[email protected]'>Teo Theodoridis</a></p> 
     </div> 
    </div> 
    <script type="text/javascript" src="cordova.js"></script> 
    <script type="text/javascript" src="js/index.js"></script> 
    <script type="text/javascript" src="js/libs/jquery/jquery.js"></script> 
    <script type="text/javascript" src="js/libs/jquery-ajaxtransport-xdomainrequest/jquery.xdomainrequest.min"></script> 
    <script type="text/javascript" src="js/libs/jqueryui/css/jquery-ui.js"></script> 
</body> 

0
var app = { 
// Application Constructor 
initialize: function() { 
    document.addEventListener('deviceready', this.onDeviceReady.bind(this), false); 
}, 
// deviceready Event Handler 
// 
// Bind any cordova events here. Common events are: 
// 'pause', 'resume', etc. 
onDeviceReady: function() { 
    this.receivedEvent('deviceready'); 

}, 
// Update DOM on a Received Event 
receivedEvent: function (id) { 
    var parentElement = document.getElementById(id); 
    var listeningElement = parentElement.querySelector('.listening'); 
    var receivedElement = parentElement.querySelector('.received'); 

    listeningElement.setAttribute('style', 'display:none;'); 
    receivedElement.setAttribute('style', 'display:block;'); 

    console.log('Received Event: ' + id); 
} 
}; 

app.initialize(); 

document.getElementById("SignUpAjaxButton").addEventListener("click", loadDoc); 

function loadDoc() { 
var str0 = $('#username').val(); 
window.alert(str0); 
/* var xhttp = new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
if (this.readyState == 4 && this.status == 200) { 
document.getElementById("demo").innerHTML = this.responseText; 
} 
}; 
xhttp.open("GET", "http://127.0.0.1/register.php?q="+str0, true); 
xhttp.send(); */ 
} 
; 
0

Si vous utilisez AngularJS alors vous pourriez faire un appel AJAX comme ceci:

var loadData = function() { 
    var config = { 
     params: { 
      whatever: xy 
     }, 
     timeout: 15000 
    }; 
    var url = 'http://yourdomain/api/data'; 
    return $http.get(url, config); 
}; 

Ne pas oublier d'injecter le module http dans votre service angulaire:

AngularApp.factory('DataService', function ($http) { 

Et au moins vérifier votre contenu la politique de sécurité dans votre fichier index.html, vous devez permettre à tous vos appels dans votre application cordova comme ceci:

<meta http-equiv="Content-Security-Policy" 
    content=" 
    default-src * 'self'; 
    img-src 'self' data:; 
    style-src 'self'; 
    script-src 'self' 'unsafe-inline' 'unsafe-eval'; 
    "> 

Ensuite, vous pouvez le faire sur votre serveur ce que vous voulez par exemple lire, écrire la base de données mysql.

+0

En fait, je n'utilise pas Angular. J'utilise JQuery Mobile –