2012-05-07 19 views
7

a dire il vero, sono un principiante assoluto con jQuery e ora sono bloccato. Voglio inviare dati dal mio modulo HTML a un php, aggiunge i dati a un database e restituisce un valore che vorrei mostrare sul mio codice HTML originale. Qui è il mio codice:jQuery funzione ajax restituisce un errore

$.ajax({ 
    type: "POST", 
    url: "http://mysite.com/process.php", 
    data: { data: mydata }, 
    cache: false, 
    dataType: "text", 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert(jqXHR.status); 
     alert(jqXHR.statusText); 
     alert(jqXHR.responseText); 
    }, 
    success: function(data){ 
     getContentBox().innerHTML = data; 
} 
}); 

restituisce un oggetto jqXHR con status = 0, statusText = "errore" e vuota responseText. Tuttavia, il mio php sembra funzionare, vedo i miei dati inseriti nel mio DB. Che cosa sto facendo di sbagliato?

Qualsiasi aiuto sarebbe apprezzato. Grazie in anticipo!

MODIFICA: La console di Chrome dice XMLHttpRequest non può caricare http://mysite.com/data.php. L'origine http://www.mysite.com non è consentita da Access-Control-Allow-Origin.

+0

quali intestazioni invia lo script php? quale output? – Fender

+0

Hai guardato la richiesta/risposta in Firebug o qualche altro strumento? –

+0

PHP stampa semplicemente il testo (stampa $ dati;). Basta guardare la richiesta con Chrome: Testo di stato: (annullato) Tipo: application/x-www-form-urlencoded; charset = UTF-8 – nXu

risposta

1

Il commento di ShelbyZ mi ha portato alla soluzione:

Il browser ha rifiutato di eseguire la richiesta quando ho provato a utilizzare un URL assoluto, ho dovuto scriverlo come relativo.

$.ajax({ 
    type: "POST", 
    url: "process.php", 
    data: { data: mydata }, 
    cache: false, 
    dataType: "text", 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert(jqXHR.status); 
     alert(jqXHR.statusText); 
     alert(jqXHR.responseText); 
    }, 
    success: function(data){ 
     getContentBox().innerHTML = data; 
} 
}); 

Grazie!

0

Prova questo (si è dimenticato di chiudere una parentesi):

$.ajax({ 
    ... 
    success: function(data){ 
    getContentBox().innerHTML = data; 
    } 
}); 
+0

Ergh, è vero, nel mio script è lì, è solo un errore di copia-incolla. Grazie mille. – nXu

0

perché non utilizzare il costruito in funzione di carica di jQuery per semplificare questo esempio

  $.post('http://mysite.com/process.php', mydata, function(data) { 
       if (data.status == 1) { 
        getContentBox().html() = data; 
       } else { 
        alert(data.status); 
        alert(data.statusText); 
        alert(data.responseText); 
       } 
      }); 

im non sicuro di quello che le vostre risposte di stato sono quindi potrebbe essere necessario modificarlo ma funzionerà se lo inserisci all'interno di un $('form here').submit(function() {POSTCODEHERE});

0

Ho avuto lo stesso problema. La funzione Ajax era associata al pulsante (type = "submit") all'interno di <form>, quindi sempre quando ho premuto questo pulsante la mia pagina è stata ricaricata e la funzione error ha funzionato invece di success. Non so davvero come sia correlato, ma quando aggiungo event.preventDefault() al listener di azioni del pulsante e funziona perfettamente.

Problemi correlati