Tengo una página principal HTML que utiliza la interfaz de usuario de jQuery mobile. En algún lugar de la página HTML Tengo una forma que es algo así como un formulario de votación:¿Cómo enviar un formulario dentro de una página de jQuery Mobile?
<form name = "vote" action = "logicDB.php" method = "post">
<center>
<h3>Watch our videos above and share your opinion which manufacturer produces the best sport sedans</h3>
<fieldset style = "width:60%;">
<legend>Choose a car:</legend>
<input type = "radio" name = "rc1" id = "radio-choice-1" value = "Audi"/>
<input type = "radio" name = "rc1" id = "radio-choice-2" value = "BMW"/>
<input type = "radio" name = "rc1" id = "radio-choice-3" value = "Mercedes"/>
</fieldset>
<input value = "SUBMIT" type = "submit" />
</center>
</form>
El parámetro de acción de la forma está llamando mi archivo php que tiene esta lógica:
<?php
$connection = mysql_connect("localhost","root","myPassword");
if(!$connection){ die('Could not connect: ' . mysql_error()); }
mysql_select_db("mydatabase", $connection);
if ($_POST['rc1'] == 'Audi')
{
mysql_query("
UPDATE carvote
SET votes = votes + 1
WHERE Brands = 'Audi'
",$connection);
echo "success Audi within if";
}
if ($_POST['rc1'] == 'BMW')
{
mysql_query("
UPDATE carvote
SET votes = votes + 1
WHERE Brands = 'BMW'
",$connection);
echo "success BMW within if";
}
if ($_POST['rc1'] == 'Mercedes')
{
mysql_query("
UPDATE carvote
SET votes = votes + 1
WHERE Brands = 'Mercedes'
",$connection);
echo "success Mercedes within if";
}
mysql_close($connection);
?>
tengo una base de datos creada en mi servidor localhost WAMP y este código php está escribiendo en la base de datos dependiendo de la opción de radio que se elija y envíe desde el formulario. Estos ecos en el php nunca se alcanzan.
El problema es que cuando hago clic en enviar, aparece una pantalla en blanco que dice "indefinido" en la esquina superior izquierda y después de eso, nada se escribe en la base de datos. He encontrado que si elimino la línea que llama al móvil jQuery en la parte superior de la página principal html , todo está funcionando bien y los datos se escriben en la base de datos (se alcanzan los ecos en el php). Parece que jQuery mobile no es compatible con mi código php. ¿Cómo debo solucionar esto? ¡Gracias de antemano!
actualizado (Me hizo trabajar): Esto es lo que ha cambiado en la forma:
<form id = "ContactForm" onsubmit="return submitForm();">
El archivo PHP con la base de datos sigue siendo el mismo. Aparte de eso, también han añadido un código de Ajax:
function submitForm()
{
$.ajax({type:'POST', url: 'logicDB.php', data:$('#ContactForm').serialize(), success: function(response)
{
$('#ContactForm').find('.form_result').html(response);
}});
return false;
}
Para summerize: Páginas jQuery Mobile (páginas interiores div con un data-role = "página") se puede submited SOLAMENTE a través de AJAX. No funcionará de otra manera. Cambiaré el tema a mi pregunta, para que más personas puedan alcanzarlo.
Busque una instrucción 'echo' /' print_r' en su archivo 'logicalDB.php', además de lo que ha proporcionado anteriormente. –
No veo tu jQuery? Sin esto no podemos ver lo que está sucediendo. –
Hola Bibhas, no tengo esto incluido en mi archivo php.Editaré mi pregunta con todo el código php. –