<script>
$.ajaxSetup({contentType: 'application/json'});
function submit_data(f){
alert('submitting')
var data_string = $(f).serialize();
$.ajax({
url: "http://localhost:3000/application/1/contact_us.json?jsonpcallback=?"+data_string,
dataType: "jsonp",
type : 'post',
processData: false,
crossDomain: true,
contentType: "application/json",
jsonp: false,
jsonpcallback: result()
});
}
function result(){
alert('back in')
alert(data)
}
function jsonp1300279694167(){
alert('dhoom')
}
</script>
Ho uno script sopra l'interrogazione attraverso il dominio e la pubblicazione di dati all'interno di un modulo.
Tutto sembra funzionare correttamente. La risposta JSON può essere vista nella console firebug. Voglio elaborare la risposta e visualizzare i messaggi di stato di conseguenza all'utente. Come dovrei realizzarlo?Leggi risposta JSON cross domain
UPDATE
ho provato come suggerito da T.J. Crowder ma non ho ancora fortuna. Il codice modificato è come sotto
function submit_data(f){
alert('submitting')
var data_string = $(f).serialize();
$.ajax({
url: "http://localhost:3000/application/1/contact_us.json?"+data_string,
dataType: "jsonp",
crossDomain: true,
success: handleSuccess()
});
}
function handleSuccess(data) {
alert("Call completed successfully");
alert(data);
}
Ciò non accessi data
e avvisi undefined
. Se provo a passarlo da success: handleSuccess()
, esso presenta errori e reindirizza con una richiesta http.
Ricevo risposta da un'applicazione Ruby on Rails
. Qui c'è il metodo che sto colpendo
def create
errors = ContactUsForm.validate_fields(params)
logger.info errors.inspect
if errors.blank?
respond_to do |format|
format.json {render :json => {:status => 'success'}.to_json}
end
else
respond_to do |format|
format.json {render :json => {:status => 'failure', :errors => errors}.to_json}
end
end
end
è un qualsiasi cosa che ho bisogno di configurare nella mia applicazione Rails
Ecco un esempio live di una chiamata JSONP: http://jsbin.com/otehi4 –
Avevo provato quasi tutto, ma non ho ancora avuto fortuna. Aggiornata la domanda con gli sforzi compiuti – Pravin
@Pravin: stai ancora mettendo '()' dopo il nome della funzione del gestore ('success: handleSuccess()'). Come ho detto nella risposta sopra, * chiama * la funzione 'handleSuccess' immediatamente (prima della chiamata ajax) e assegna il suo valore di ritorno all'opzione' success' su 'ajax'. Per riferirsi a una funzione senza chiamarla, si lascia '()' off (ad esempio 'success: handleSuccess'). –