Comunidad de diseño web y desarrollo en internet online

Pasar variable asincronamente con jquery ajax

Citar            
MensajeEscrito el 27 Oct 2013 05:39 pm
Pasar variable asincronamente con jquery

Hola,

Estoy usando el plugin fancybox como ventana modal.


Necesito pasar la variable $row["nombreempresa"] recogida de una
base de datos dentro de un bucle while y cargar un formulario
dentro de una ventana modal y que se envíe asincronamente.
No encuentro la manera de hacerlo. Llevo pillado con esto una semana.
De momento solo he conseguido pasar los datos del formulario serializando los datos pero,
¿como puedo pasar a la vez $row["nombreempresa"] ?
Para ello se me ocurre poner un name que
contenga dicha variable y que al hacer clic la envíe, pero no se como recogerla y enviarla mediante ajax y con los datos del formulario serializados a la vez.


Primero págino una serie de resultados:



while ($row = $result->fetch_assoc()) {?>



<div class="aladerechaflota">
<p><a class="modalbox" href="#inline" name="<?php echo $row["nombreempresa"];?>">click to open</a></p>


<!-- hidden inline form -->

</div>

</div>


<?php }

/* liberar el resultset */
$result->free();

}

/* cerrar la conexión */

$conn->close();

?>

<div id="inline">
<h2>Send us a Message</h2>

<form id="contact" name="contact" action="#" method="post">

<label for="email">Your E-mail</label>
<input type="email" id="email" name="email" class="txt">
<br>
<label for="msg">Enter a Message</label>
<textarea id="msg" name="msg" class="txtarea"></textarea>

<button id="send">Send E-mail</button>
</form>
</div>


El script que valida el formulario y pasa los datos a send_email.php es el siguiente:

function validateEmail(email) {
var reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return reg.test(email);
}

$(document).ready(function() {
$(".modalbox").fancybox();
$("#contact").submit(function() { return false; });


$("#send").on("click", function(){
var emailval = $("#email").val();
var msgval = $("#msg").val();
var msglen = msgval.length;
var mailvalid = validateEmail(emailval);

if(mailvalid == false) {
$("#email").addClass("error");
}
else if(mailvalid == true){
$("#email").removeClass("error");
}

if(msglen < 4) {
$("#msg").addClass("error");
}
else if(msglen >= 4){
$("#msg").removeClass("error");
}

if(mailvalid == true && msglen >= 4) {
// if both validate we attempt to send the e-mail
// first we hide the submit btn so the user doesnt click twice
$("#send").replaceWith("<em>sending...</em>");

$.ajax({
type: 'POST',
url: 'includes/send_email.php',
data: $("#contact").serialize(),
success: function(data) {
if(data == "true") {
$("#contact").fadeOut("fast", function(){
$(this).before("<p><strong>Success! Your feedback has been sent, thanks :)</strong></p>");
setTimeout("$.fancybox.close()", 1000);
});
}
}
});
}
});
});


El archivo sendemail.php el cual envía el formulario y devuelve la respuesta es:

<?php
$sendto = "[email protected]";
$usermail = $_POST['email'];
$content = nl2br($_POST['msg']);

$subject = "New Feedback Message";
$headers = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

$msg = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>New User Feedback</h2>\r\n";
$msg .= "<p><strong>Sent by:</strong> ".$usermail."</p>\r\n";
$msg .= "<p><strong>Message:</strong> ".$content."</p>\r\n";
$msg .= "</body></html>";


if(@mail($sendto, $subject, $msg, $headers)) {
echo "true";
} else {
echo "false";
}

?>

Gracias de antemano por la atención prestada.


Manuel

Por maligix

13 de clabLevel



Genero:Masculino  

Directorio de profesionales

firefox
Citar            
MensajeEscrito el 28 Oct 2013 12:20 pm
Ponla en un <input type="hidden" />

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 28 Oct 2013 06:30 pm

DriverOp escribió:

Ponla en un <input type="hidden" />


Ya lo he probado y no funciona. Lo que ocurre es que no le pasa a la función más que el primer valor del while y tengo más enlaces con diferentes $row ['nombreempresa'].

Por maligix

13 de clabLevel



Genero:Masculino  

Directorio de profesionales

firefox
Citar            
MensajeEscrito el 03 Nov 2013 08:38 pm
como dice el amigo , pasa una variable atraves input del tipo hiiden o bien
convertir el formulario en un array y pasarlo a la variable.

ejemplo

var formulario=$('#formularioID').serializableArray();

y luego un push.

data.push({
name : 'nombreEmpresa',
valor : value

});


Esto debe ir en la funcion que vas a buscar la empresa , y luego mandas el formulario a otra funcion y esa funcion es finalmente quien va hacer la petición ajax
con el formulario más el dato que quieras enviar.

Por xcom

Claber

530 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.