Ajax no funciona – Jquery Phonegap Android
Hola a todos y gracias por adelantado. Estoy usando Phonegap 2.1.0. En la lista blanca todo es aceptado.
**<access uri="*" subdomains="true" /> <access origin=".*" subdomains="true"/>**
Estoy utilizando esta función para llamar a un archivo php remoto de mi servidor web universitario:
- ¿Cómo soluciono las esquinas de `ui-corner-all` de JQuery Mobile?
- JQuery Arrastrar y soltar en dispositivos táctiles (iPad, Android)
- El elemento <select> de HTML está abreviado en navegadores iPhone o Android
- JQuery Autocompletar trabajando en Chrome pero no en android usando phonegap
- ScrollLeft cálculo incorrecto en Firefox Android
var postData = $(this).serialize(); $.ajax({ type: 'POST', url: 'http://--/smartphone/login.php', dataType : 'json', data: postData, success: function(data){ alert("good"); }, error: function(){ alert('problem!'); } });
El archivo php es sólo por razones de depuración como esta:
<?php header('Content-Type: application/json'); $sample = array( 'name'=>'My Name', 'email'=>'[email protected]' ); echo json_encode($sample); ?>
Pero la solicitud de ajax no está sucediendo .. en eclipse sigo recibiendo este error cuando hago clic en enviar:
JSCallback Error: Request failed with status 0 at file:///android_asset/www/js/cordova-2.1.0.js:3743
Lo que es más, me olvidé de añadir, es que puedo abrir la url como un enlace desde el emulador. Funciona bien.
* Código html: *
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="css/index.css" /> <script type="text/javascript" charset="utf-8" src="js/cordova-2.1.0.js"></script> <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> <script type="text/javascript" src="js/index.js"></script> <title>Smart Greenhouse</title> </head> <body> <div id="container"> <img src="css/images/smart_green_house.png" class="logo" alt="l1ogo" /> <form id="login_form" class="first_display" > <label class="title"> E-mail:</label> <input id="1" type="email" class="input" size="45" name="email" /> <label class="title"> password:</label> <input id="2" type="password" class="input" size="45" name="password" /> <input id="3" class="submit_type" type="submit" value="login" /> </form> </div> </body> </html>
He buscado creo que casi toda la web … 2 días de búsqueda … todo ha sido probado .. Thanx mucho ..
- Forzar la interpretación de porcentaje de transformación CSS3 correcta en Android
- La relación entre las funciones "onBodyLoad () / onDeviceReady ()" de Phonegap y las funciones "$ (document) .ready ()" de JQuery,
- Agregar opciones para seleccionar utilizando jQuery no funciona
- Aplicación Phonegap (compilación en línea): no hay conexión a Internet ni estado de la red
- Forzar el teclado abierto en android
- Evitar que el cuerpo se desplace (navegadores móviles y nativos)
- Event.stopImmediatePropagation () no funciona en Chrome para Android
- El tipo de archivo es una cadena vacía al cargar desde el navegador nativo de Android
Finalmente, después de 4-5 días de búsqueda .. algo funcionó para mí .. Acabo de añadir return false
después de la devolución de llamada ajax. Y cambié el código como sigue:
$('form').submit(function(e){ if (password_ok==1 && email_ok==1) { var postData = $(this).serialize(); $.ajax({ type: 'POST', url: 'http://mysite.xx.x/smartphone/login.php', dataType : 'json', data: postData, success: function(data){ alert(data); }, error: function(){ alert('error!'); } }); } else { e.preventDefault(); if (email_ok==2) { $("#1").css("border-color","red"); $("#1").css("background-color","#FFD8CE"); } if (password_ok==2) { $("#2").css("border-color","red"); $("#2").css("background-color","#FFD8CE"); } } return false; });
Ahora, el único problema es que no restablece la página cuando se realiza correctamente … pero un paso a la vez …
Paso 1 : Es necesario incluir dos encabezados en su archivo php
header('Content-Type: application/json'); header("Access-Control-Allow-Origin: *");
Paso 2 : Incluya la biblioteca cdn jquery en su página de índice.
Paso 3 : utilizar el script para publicar el formulario correctamente
<script type="text/javascript"> $(document).ready(function() { $('form').submit(function(e) { var postData = $(this).serialize(); $.ajax({ type : 'POST', url : 'http://www.yoururl/test.php', dataType : 'json', data : postData, success : function(data) { alert(data); }, error : function() { alert('error!'); } }); return false; }); }); </script>
Lo he probado en el teléfono y está funcionando bien.
Creo que la razón es causada por "Presentación de formulario". ¿Dónde puso su código ajax? En el index.js?
La excepción que tienes significa "0 == Page está descargando."
En su caso, supongo que poner sus códigos ajax en index.js que está en la misma página con el formulario. Cuando envía el formulario, el navegador empieza a descargar la página actual y carga la página con los resultados de la presentación del formulario. Así que sus códigos ajax obtener la excepción "La página está descargando".
Trate de no utilizar el envío de formularios.
- Filtro de intento pathPrefix con signo de interrogación
- Detener desplazamiento en CollapsingToolbarLayout para que no se derrumbe completamente