Este team de redactores ha pasado mucho tiempo buscando para darle respuesta a tus dudas, te compartimos la resolución por eso deseamos que te resulte de gran apoyo.
Solución:
Te recomendaría que hicieras uso de la $.post
o $.get
sintaxis de jQuery para casos simples:
$.post('superman', field1: "hello", field2 : "hello2",
function(returnedData)
console.log(returnedData);
);
Si necesita detectar los casos fallidos, simplemente haga esto:
$.post('superman', field1: "hello", field2 : "hello2",
function(returnedData)
console.log(returnedData);
).fail(function()
console.log("error");
);
Además, si siempre envía un JSON stringpuede usar $.getJSON o $.post con un parámetro más al final.
$.post('superman', field1: "hello", field2 : "hello2",
function(returnedData)
console.log(returnedData);
, 'json');
Intenta usar el método GET,
var request = $.ajax(
url: 'url',
type: 'GET',
data: field1: "hello", field2 : "hello2" ,
contentType: 'application/json; charset=utf-8'
);
request.done(function(data)
// your success code here
);
request.fail(function(jqXHR, textStatus)
// your failure code here
);
No puede ver los parámetros en la URL con el método POST.
Editar:
Aviso de desaprobación: Las devoluciones de llamada jqXHR.success(), jqXHR.error() y jqXHR.complete() se eliminan a partir de jQuery 3.0. Puede usar jqXHR.done(), jqXHR.fail() y jqXHR.always() en su lugar.
Jquery.ajax no codifica automáticamente los datos POST de la misma forma que lo hace con los datos GET. Jquery espera que sus datos estén preformateados para anexarse al cuerpo de la solicitud y enviarse directamente a través de la red.
Una solución es usar la función jQuery.param para construir una consulta string que esperan la mayoría de los scripts que procesan solicitudes POST.
$.ajax(
url: 'superman',
type: 'POST',
data: jQuery.param( field1: "hello", field2 : "hello2") ,
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: function (response)
alert(response.status);
,
error: function ()
alert("error");
);
En este caso el param
El método formatea los datos para:
field1=hello&field2=hello2
La documentación de Jquery.ajax dice que hay un indicador llamado processData
que controla si esta codificación se realiza automáticamente o no. La documentación dice que por defecto es true
pero ese no es el comportamiento que observo cuando POST
se usa