Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

500
Visualizações
jQuery .ajax (): ¿agregar parámetros de consulta a la solicitud POST?

Para agregar parámetros de consulta a una URL usando jQuery AJAX, haga esto:

 $.ajax({ url: 'www.some.url', method: 'GET', data: { param1: 'val1' } )}

Lo que da como resultado una URL como www.some.url?param1=val1

¿Cómo hago lo mismo cuando el método es POST? Cuando ese es el caso, data ya no se agregan como parámetros de consulta, sino que forman el cuerpo de la solicitud.

Sé que podría agregar manualmente los parámetros a la URL antes de la solicitud ajax, pero tengo la molesta sensación de que me falta una forma obvia de hacerlo que sea más corta que las ~ 5 líneas que necesitaré para ejecutar antes de la llamada ajax.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

jQuery.param() le permite serializar las propiedades de un objeto como una cadena de consulta, que usted mismo podría agregar a la URL:

 $.ajax({ url: 'http://www.example.com?' + $.param({ paramInQuery: 1 }), method: 'POST', data: { paramInBody: 2 } });
over 4 years ago · Santiago Trujillo Relatório

0

Gracias @Ates Goral por la sugerencia de jQuery.ajaxPrefilter() . Mi problema era que no podía cambiar la url porque estaba vinculada a kendoGrid y la API web de back-end no admitía las opciones de paginación del servidor de kendoGrid (es decir, page , pageSize de página, skip y take ). Además, las opciones de paginación de back-end tenían que ser parámetros de consulta con un nombre diferente. Entonces tuve que poner una propiedad en los data para activar el prefiltrado.

 var grid = $('#grid').kendoGrid({ // options here... dataSource: { transport: { read: { url: url, contentType: 'application/json', dataType: 'json', type: httpRequestType, beforeSend: authentication.beforeSend, data: function(data) { // added preFilterMe property if (httpRequestType === 'POST') { return { preFilterMe: true, parameters: parameters, page: data.page, itemsPerPage: data.pageSize, }; } return { page: data.page, itemsPerPage: data.pageSize, }; }, }, }, }, });

Como puede ver, las opciones de transport.read son las mismas opciones para jQuery.ajax() . Y en el bit de prefiltrado:

 $.ajaxPrefilter(function(options, originalOptions, xhr) { // only mess with POST request as GET requests automatically // put the data as query parameters if (originalOptions.type === 'POST' && originalOptions.data.preFilterMe) { options.url = options.url + '?page=' + originalOptions.data.page + '&itemsPerPage=' + originalOptions.data.itemsPerPage; if (originalOptions.data.parameters.length > 0) { options.data = JSON.stringify(originalOptions.data.parameters); } } });
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda