Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Phonegap Cross-domain AJAX POST La solicitud no funciona en Android

La solicitud AJAX POST de varios dominios funciona perfectamente en los navegadores web, incluidos los navegadores de teléfonos móviles, pero no funciona para aplicaciones nativas creadas con Phonegap

He creado un formulario de inicio de sesión que los usuarios tienen que ingresar sus credenciales de inicio de sesión y luego son verificados por el servidor alojado en heroku y devuelve json {"success":true} si se ingresan credenciales válidas.

  • Las cookies de sesión de Cordova no funcionan en Android Lollipop
  • Las solicitudes de Ajax fallan después de actualizar a Cordova 5.0 + cordova-android@4.0
  • Ajax no funciona - Jquery Phonegap Android
  • Android: Interceptar llamada AJAX desde WebView
  • Cómo comprobar la existencia de un archivo en la guía telefónica con un mensaje telefónico
  • La función ajax de jQuery no funciona en la aplicación Android PhoneGap
  • Mi script Ajax:

     $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", contentType: "application/x-www-form-urlencoded; charset=utf-8", dataType: "json", data: {identity: <username from form>, password: <password from form>}, crossDomain: true, cache: false, success: function(data) { obj = JSON.parse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); 

    Pasos realizados para resolver este problema:

    • Lista blanca del dominio – config.xml

    <access origin="http://domain.com/public/auth/app-login" />

    <access origin="*" />

    • Diciendo jQuery para permitir el dominio cruzado

    $.support.cors = true; OR jQuery.support.cors = true;

    • Deshabilitar caché cache: false

    Cualquier ayuda es apreciada.

  • Cómo configurar los certificados SSL con Charles Web Proxy y el último emulador de Android en Windows?
  • ¿Cómo abrir un sitio web cuando se hace clic en un botón en la aplicación de Android?
  • Android: singleline = true no funciona para edittext
  • Android Studio "La compatibilidad con NDK actual está obsoleta"
  • Android - Widget con lista desplegable Listview Manual Actualizar
  • AppBarLayout.setExpanded (boolean, true) animación extraña en la biblioteca de soporte 23.1.1
  • 4 Solutions collect form web for “Phonegap Cross-domain AJAX POST La solicitud no funciona en Android”

    De acuerdo. Si index.html en local entonces usted puede llamar a ajax cualquier anfitrión, no necesita habilitar CORS en cliente o servidor. Eliminar:

     $.support.cors = true; OR jQuery.support.cors = true; 

    Y:

     <access origin="http://domain.com/public/auth/app-login" /> 

    Es redundante, sólo uso:

     <access origin="*" /> 

    Necesita comprobar y agregar en AndroidManifest.xml:

     <uses-permission android:name="android.permission.INTERNET" /> 

    Agregue más permisos si su aplicación es necesaria. Finalmente, llame a ajax dentro de $ (document) .ready ():

     $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", dataType: "json", data: {identity: <username from form>, password: <password from form>}, success: function(data) { obj = JSON.parse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); 

    Si usted está buscando para resolver este problema, entonces puede que desee asegurarse de que el complemento está siendo incluido correctamente en el proceso de construcción.

     RESOURCE: \app\config.xml <widget> .... [lots of stuff] .... <gap:plugin name="com.indigoway.cordova.whitelist.whitelistplugin" /> <access origin="http://*" /> .... </widget> 

    Es posible que también desee especificar una versión como se recomienda, y no especifico una anterior. Una buena manera de probar si se incluye el complemento es usar la cuenta gratuita en la nube proporcionada en https://build.phonegap.com/apps . Si construye su proyecto allí, puede comprobar la pestaña de complementos y asegurarse de que el complemento de lista blanca está incluido.

    He leído que sólo debe necesitar esto en el elemento HEAD de su página HTML, pero he encontrado a partir de la fecha de este post que todavía necesitaba incluir el complemento.

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

    Si el complemento no está cargado, es posible que obtenga un error "No encontrado" al usar el método $.ajax para jQuery para la cadena de error.

    Parte de la información en Internet le dirá que la información de la lista blanca se coloca en la carpeta /www/res/ , pero esta parece ser información obsoleta. También puede encontrar que <plugin... se utiliza en algunos ejemplos, pero parece que esto puede ser una forma obsoleta?

    Además, puede necesitar:

     RESOURCE: \app\config.xml <widget> ... <feature name="http://api.phonegap.com/1.0/network"/> ... </widget> 

    utilizar

     JSON.stringify(data: {identity: <username from form>, password: <password from form>}) 

    En lugar de data: {identity: <username from form>, password: <password from form>}

    Conseguí el mensaje del éxito cuando cambié mi código como esto.

    Algún tiempo hay un problema en su dominio. En mi caso lo resolví poniendo el siguiente código en mi archivo .htaccess

     <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.