留言板

Acceder a los parámetros de una petición AJAX.

Eloy Fernández,修改在9 年前。

Acceder a los parámetros de una petición AJAX.

New Member 帖子: 8 加入日期: 15-1-6 最近的帖子
Hola, buenos días, and a happy new year!!.

Estoy empezando con esto de portlets y después de hacer algunas pruebas con un par de ejemplos que vi por la web, y siguiendo los pasos de un tercer ejemplo, me puse a hacer un portlet donde se utiliza una llamada a un método mediante AJAX. Todo medio funciona, pero lo único que en el lado del servidor no soy capaz de coger los valores de las variables pasadas desde el cliente. Pongo el código y me explico mejor.

Parte del servido. Método serveResource.

	@Override
	public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws PortletException, IOException 
	{
		String resourceId = resourceRequest.getResourceID();
		if (Validator.isNotNull(resourceId) && resourceId.length() != 0 && resourceId.equalsIgnoreCase("getDataResourceURL"))
		{
			// recojemos los parámetros pasados en la petición
			//final String operators = resourceRequest.getParameter("operators");
			String operators = ParamUtil.getString(resourceRequest, "operators");

			_log.info("Los datos desde el POST son: " + operators);

			// creamos objeto JSON de respuesta
			JSONObject jsonFeed = JSONFactoryUtil.createJSONObject();

			jsonFeed.put("result", 8); //esto sólo para prueba

			resourceResponse.setContentType("application/json");
			resourceResponse.setCharacterEncoding("UTF-8");
			resourceResponse.getWriter().write(jsonFeed.toString());
		}
	}


Parte del cliente. jQuery AJAX

	jQuery("#operation").click(function() 
	{
		var url 		= '<portlet:resourceurl id="getDataResourceURL"></portlet:resourceurl>';
		var operators 	= jQuery('#result').html();
		jQuery.ajax({
			url:url,
			type:'post',
			dataType: "json",
			data:{operators:operators},
			success: function(data)
			{
				jQuery('#result').html(data.result);
			}
		});
	});	


Bueno, pues la explicación que tengo que hacer, es simplemente que la parte que si funciona es que después de la llamada el div cuya id es result se carga con el valor de data.result (que para las pruebas está siendo 8). Pero, por otra parte, lo que no está funcionando es que, en el lado del servidor, la línea _log.info("Los datos desde el POST son: " + operators); no saca nunca el valor que le paso en data:{operators:operators} (de la función jQuery.ajax). El valor de operators es null (si utilizo el método resourceRequest.getParameter("operators");) o un string vacío (si utilizo el método ParamUtil.getString(resourceRequest, "operators");).
Qué estoy haciendo mal?? hay que tener algo en cuenta en los xml o algo para que funcione??

Gracias.
Carlos Vicente,修改在9 年前。

RE: Acceder a los parámetros de una petición AJAX.

Junior Member 帖子: 25 加入日期: 10-6-8 最近的帖子
El problema es que el método serveResource no lee los parámetros directamente del request de la url, sino del portletRequest. En este los nombres de los parámetros están tocados para incluir referencias de a que portlet pertenecen los parámetros.

A mi modo de ver, tienes 2 opciones para hacer esto:
-Usar un servlet normal y corriente.
-Usar el mecanismo para crear métodos JSON que ofrece el Service Builder.
thumbnail
Pablo Zapico,修改在9 年前。

RE: Acceder a los parámetros de una petición AJAX.

Junior Member 帖子: 48 加入日期: 10-6-2 最近的帖子
Buenos dias..

Has probado a utilizar Spring portlet mvc? te facilitaria mucho el trabajo.