• Jobs
  • About Us
  • Jobs
    • Home
    • Jobs
    • Courses and challenges
  • Businesses
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Hire tech talent
    • Blog
    • Sales
    • Salary Calculator

0

515
Views
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.

almost 4 years ago · Santiago Trujillo
2 answers
Answer question

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 } });
almost 4 years ago · Santiago Trujillo Report

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); } } });
almost 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!