2010-03-30 6 views
1

J'ai ce formulaire soumettre le code:changement prototype de script à jquery un

Event.observe(window, 'load', init, false); 
function init() { 
    Event.observe('addressForm', 'submit', storeAddress); 
} 
function storeAddress(e) { 
    $('response').innerHTML = 'Adding email address...'; 
    var pars = 'address=' + escape($F('address')); 
    var myAjax = new Ajax.Updater('response', 'ajaxServer.php', {method: 'get', parameters: pars}); 
    Event.stop(e); 
} 

Comment puis-je changer pour travailler avec jQuery?

Voici le formulaire HTML:

<form id="addressForm" action="index.php" method="get"> 
    <b>Email:</b> <input type="text" name="address" id="address" size="25"><br> 
    <input name="Submit" value="Submit" type="submit" /> 
    <p id="response"><?php echo(storeAddress()); ?></p> 
</form> 

ce qui est code php au début du document:

<?php 
require_once("inc/storeAddress.php"); 
?> 

Répondre

3

Quelque chose comme ceci:

$(function() { 
    $('#addressForm').submit(function() { 
     $('#response') 
      .html('Adding email address...') 
      .load('ajaxServer.php', { address: $('#address').val() }, function() { 
       $('#address').val(''); 
      }); 
     return false; 
    }); 
}); 

Remarque : lors de l'utilisation .load(), la méthode POST est utilisée si des données sont fournies en tant qu'objet; sinon, GET est supposé. Donc, si vous voulez transmettre les données GET, utilisez:

.load('ajaxServer.php', 'address='+$('#address').val()); 

Ou tout simplement obtenir les données soumises de $_POST['address'] qui serait plus sage et plus facile à mon avis.

+0

salut ce n'est pas la soumission de données – steve

+0

@steve, j'ai mis à jour ma réponse avec une solution. –

+0

fonctionne génial :) – steve

-1

Donnez-ce un tourbillon ..

function init() 
{ 
    $('#addressForm').submit(storeAddress); 
} 

function storeAddress(e) 
{ 
    $('#response').html('Adding address...'); 

    var params = 'address=' + $('#address').val(); 

    $('#response').load('ajaxServer.php', params); 

    $.ajax({ 
     url : 'index.php', 
     data : $('#addressForm').serialize(), 
     success : function(data) 
     { 
      alert('yay, form data sent!'); 
     } 
    }); 

    // Fix - stops page reload 
    return false; 
} 

$(document).ready(init); 
+0

je tentais cette page reload coutume, bien que les données sont présentées, mais la page est en train de recharger – steve

+0

Essayez maintenant, il envoie les données de formulaire ajaxically et arrête le formulaire de soumission (en retournant false). –

+0

oh oui cela fonctionne doux comment vais-je supprimer la fenêtre d'alerte qui apparaît. Je n'ai pas besoin de cela, est également cette soumission de données à deux reprises, les e-mails apparaissent en paires avec soumettre unique. merci – steve

2

Vous pouvez convertir le script comme ceci:

$(function() { 
    $('#addressForm').submit(function(e) { 
    $('#response').html('Adding email address...'); 
    $.ajax({ 
     url: 'ajaxServer.php', 
     type: 'GET', 
     data: {'address': $('#address').val() }, 
     success: function(response) { 
      $('#response').html(response); 
     } 
    }); 
    e.preventDefault(); 
    return false; 
    });​ 
}); 

Voici une diminution des effectifs équivalents:

  • .html() pour l'appel innerHTML
  • $('#id') selector pour findi ng par un ID
  • $.ajax pour l'appel ajax
    • data est les paramètres transmis, définissez la paire (aucune adresse = ...)
    • success fonctionne de rappel lorsque la demande complète
      • mis la réponse dans les id="response" div ici
+0

bien que les données soient soumises mais la page est en train de se recharger – steve

+0

@steve - Mis à jour, ceci devrait empêcher la soumission par défaut de se produire maintenant. –

+0

Vous feriez mieux d'observer l'événement submit sur le formulaire plutôt que l'événement click sur le bouton submit. On dirait que c'est ce que le code prototype faisait aussi. – PetersenDidIt