Domanda

Attualmente sto montare un modulo di contatto personalizzato su un sito WordPress che sto cercando di inviare tramite la tecnologia AJAX con jQuery, tuttavia quando eseguo la funzione $ .post, firebug sta segnalando un errore 404 nella console, anche se posso digitare l'URL nella barra degli indirizzi al mio e visualizzare la pagina in modo corretto. Io non metto tra domini.

Ecco un esempio del mio codice, con il codice irrilevante rimosso:

<form action="" method="post" onsubmit="return submitContactForm()" class="contactform">
 <!-- inputs etc here -->
</form>

<script type="text/javascript">
function submitContactForm() {
  // Omitted error checking here, return false on error
  $.post('/contact'/, $('.contactform').serialize(), function(data) {
    alert(data);
    return false;
  });
  return true;
}
</script>

Il post non è mai successo e la forma invia il modo "normale" ogni volta.

Ho provato molte combinazioni nella parte URL del $ .post compreso / contatto /, / contatto, contatto, / contatto /, anche l'URL completo del sito senza fortuna. Qualcuno ha avuto questo problema prima? O sto facendo qualcosa di sbagliato clamorosamente? La mia unica ipotesi è qualcosa a che fare con la mia /% postname% / permalink struttura, diverso da quello che sono incompetenti!

Tutte le idee / pensieri apprezzato

Grazie, Andy

È stato utile?

Soluzione 2

Alla fine ho capito che cosa sta succedendo. Fondamentalmente il palo ajax veniva eseguita in modo asincrono, in modo da prima che la risposta era stata receieved lo script continuato elaborazione

L'aggiunta di async: false per una chiamata $ .ajax risolto il problema

Grazie per l'aiuto

Altri suggerimenti

Questo è nella documentazione jQuery:

Questa è una funzione di stenografia Ajax, che è equivalente a:

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success
  dataType: dataType
});

Prova questo:

        $(function()
        {
            $("button#send").click(function() {
                $.ajax({
                    type: "POST",
                    url: "post.php",
                    data: $("#form").serialize(),
                    success: function(msg){
                        $("#msg_ok").html(msg);
                        $("#form").reset();
                        //alert(msg);
                    }
                });
            });
        });

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top