2012-05-09 14 views
5

Tengo un servicio WCF que espera una POST. Utilizando Fiddler descubrí que en situaciones de dominio cruzado, mi solicitud POST se cambiaba a un GET que da como resultado el error 405 del servidor.JQuery ajax JSONP POST cambió a GET cuando se usa el dominio cruzado

$.ajax({ 
    type: "POST", 
    url: "http://blah/blah.svc/Test", 
    data: JSON.stringify("{ 'WebUserID': 4 }"), 
    dataType: "jsonp", // from server 
    contentType: "application/json; charset=utf-8", // to server 
    success: function (data, status, xhr) { 
     alert("success--"); 
    } 
}); 

¿Alguien puede arrojar algo de luz sobre esto?

Gracias

+1

Esto no es realmente un duplicado, pero la respuesta responde a esta pregunta: http://stackoverflow.com/questions/2699277/post-data-to-jsonp – lonesomeday

Respuesta

0

Se conversión de conseguir debido a que ya no tienen un par nombre/valor después de hacer el JSON.stringify; solo tienes una cuerda. POST requiere un par nombre/valor.

+0

No 'JSON.stringify' sus datos a menos que Significa pasar una representación en serie de un objeto. –

+0

No debe escribir, pero no por lo que mencionaste. El parámetro para 'stringify' ya está" stringified ", no es un objeto JS (es una cadena). Stringifying lo codificará doblemente, lo cual fallará. – carlosfigueira

+0

Y para enviar los datos en una solicitud POST, en realidad necesita pasar una versión serializada del objeto (en el cuerpo de la solicitud). – carlosfigueira

10

No hay POST y JSONP. JSONP funciona creando una nueva etiqueta de script en el DOM que envía una solicitud GET al servidor. Le está dando a jQuery.ajax dos parámetros incompatibles (POST, jsonp), y jQuery elige uno sobre el otro.

Una actualización: puede usar algo como CORS (Intercambio de recursos de origen cruzado) para habilitar solicitudes no GET para servicios entre dominios. WCF no lo admite de fábrica, pero escribí una publicación sobre su implementación en WCF en http://blogs.msdn.com/b/carlosfigueira/archive/2012/05/15/implementing-cors-support-in-wcf.aspx.

+0

Downvoter, me gustaría comentar por qué? – carlosfigueira

Cuestiones relacionadas