<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>
Tengo el guión anterior preguntando por el dominio y publicando datos dentro de un formulario.
Todo parece funcionar bien. La respuesta JSON se puede ver en la consola Firebug. Quiero procesar la respuesta y mostrar los mensajes de estado según corresponda al usuario. ¿Cómo debería lograrlo?Leer dominio cruzado Respuesta de JSON
ACTUALIZACIÓN
me han tratado como sugiere T. J. Crowder pero todavía no tiene suerte. El código modificado es la siguiente
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);
}
Esto no data
accesos y alertas undefined
. Si intento pasarlo desde success: handleSuccess()
, se produce un error y se redirecciona con una solicitud http.
Recibo respuesta de una aplicación Ruby on Rails
. Aquí no es el método que estoy golpeando
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
Hay alguna cosa que necesito configurar en mi rieles aplicación
Aquí hay un ejemplo en vivo de una llamada JSONP: http://jsbin.com/otehi4 –
Probé casi todo, pero aún no tengo suerte. Se actualizó la pregunta con los esfuerzos realizados – Pravin
@Pravin: Todavía está poniendo '()' después del nombre de la función del manejador ('success: handleSuccess()'). Como dije en la respuesta anterior, * llama * a la función 'handleSuccess' inmediatamente (antes de la llamada ajax) y asigna su valor de retorno a la opción' success' a 'ajax'. Para hacer referencia a una función sin llamarla, deje '()' desactivado (por ejemplo, 'success: handleSuccess'). –