Foros del Web » Programando para Internet » Javascript »

Error en función eval();

Estas en el tema de Error en función eval(); en el foro de Javascript en Foros del Web. Hola a todos, Tengo una aplicación en PHP que retorna el siguiente string desde un Ajax: El archivo PHP realiza la siguiente acción: Código PHP: ...
  #1 (permalink)  
Antiguo 11/08/2010, 09:04
 
Fecha de Ingreso: julio-2008
Ubicación: Caldas, Antioquia, Colombia
Mensajes: 81
Antigüedad: 16 años, 4 meses
Puntos: 4
Error en función eval();

Hola a todos,

Tengo una aplicación en PHP que retorna el siguiente string desde un Ajax:

El archivo PHP realiza la siguiente acción:

Código PHP:
echo 'response = ' $json->encode(array('html' => $html'script' => $script)); 
Ésto genera un string similar a éste:

Código:
response = {"html":"<div align=\"right\" id=\"dashletSearch\">\n\t<table>\n\t\t<tr>\n\t\t\t<td>Buscar Sugar Dashlet: <input id=\"search_string\" type=\"text\" length=\"15\" onKeyPress=\"javascript:if(event.keyCode==13)SUGAR.mySugar.searchDashlets(this.value,document.getElementById('search_category').value);\" \/>\n\t\t\t<input type=\"button\" class=\"button\" value=\"Buscar\" onClick=\"javascript:SUGAR.mySugar.searchDashlets(document.getElementById('search_string').value,document.getElementById('search_category').value);\" \/>\n\t\t\t<input type=\"button\" class=\"button\" value=\"Limpiar\" onClick=\"javascript:SUGAR.mySugar.clearSearch();\" \/>\t\t\t\n\t\t\t\t\t\t<input type=\"hidden\" id=\"search_category\" value=\"module\" \/>\n\t\t\t\t\t\t<\/td>\n\t\t<\/tr>\n\t<\/table>\n\t<br>\n<\/div>\n\n <ul class=\"subpanelTablist\" id=\"dashletCategories\">\n\t<li id=\"moduleCategory\" class=\"active\"><a href=\"javascript:SUGAR.mySugar.toggleDashletCategories('module');\" class=\"current\" id=\"moduleCategoryAnchor\">M\u00f3dulos<\/a><\/li>\n\t<li id=\"chartCategory\" class=\"\"><a href=\"javascript:SUGAR.mySugar.toggleDashletCategories('chart');\" class=\"\" id=\"chartCategoryAnchor\">Gr\u00e1ficos<\/a><\/li>\n\t<li id=\"toolsCategory\" class=\"\"><a href=\"javascript:SUGAR.mySugar.toggleDashletCategories('tools');\" class=\"\" id=\"toolsCategoryAnchor\">Herramientas<\/a><\/li>\t\n<\/ul>\n\n<div id=\"moduleDashlets\" style=\"overflow-y:auto;height:400px;\">\n\t<h3>M\u00f3dulos<\/h3>\n\t<div id=\"moduleDashletsList\">\n\t<table width=\"95%\">\n\t\t\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t<td width=\"50%\" align=\"left\"><a href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('TopCampaignsDashlet', 'module', 'Campaigns');\"><img border=\"0\" src=\"themes\/default\/images\/icon_Campaigns_32.gif?c=1&developerMode=1102084534\" width=\"32\" height=\"32\" align=\"absmiddle\"><\/a>&nbsp;<a class=\"mbLBLL\" href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('TopCampaignsDashlet', 'module', 'Campaigns');\">Campa\u00f1as Principales<\/a><br \/><\/td>\n\t\t\t\t\n\t\t\t\t\t\t\t<td width=\"50%\" align=\"left\"><a href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('aig_opportunities_productos_serviciosDashlet', 'module', 'aig_opportunities_productos_servicios');\"><img src=\"custom\/themes\/default\/images\/icon_aig_opportunities_productos_servicios_32.gif\" border=\"0\" align=\"absmiddle\" \/><\/a>&nbsp;<a class=\"mbLBLL\" href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('aig_opportunities_productos_serviciosDashlet', 'module', 'aig_opportunities_productos_servicios');\">Mi Oportunidades Productos y Servicios<\/a><br \/><\/td>\n\t\t\t\t<\/tr>\n\t\t\t\t\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t<td width=\"50%\" align=\"left\"><a href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('aig_productos_serviciosDashlet', 'module', 'aig_productos_servicios');\"><img src=\"custom\/themes\/default\/images\/icon_aig_productos_servicios_32.gif\" border=\"0\" align=\"absmiddle\" \/><\/a>&nbsp;<a class=\"mbLBLL\" href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('aig_productos_serviciosDashlet', 'module', 'aig_productos_servicios');\">Mi Productos y Servicios<\/a><br \/><\/td>\n\t\t\t\t\n\t\t\t\t\t\t\t<td width=\"50%\" align=\"left\"><a href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('MyCasesDashlet', 'module', 'Cases');\"><img border=\"0\" src=\"themes\/default\/images\/icon_Cases_32.gif?c=1&developerMode=279949929\" width=\"32\" height=\"32\" align=\"absmiddle\"><\/a>&nbsp;<a class=\"mbLBLL\" href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('MyCasesDashlet', 'module', 'Cases');\">Mis Casos Abiertos<\/a><br \/><\/td>\n\t\t\t\t<\/tr>\n\t\t\t\t\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t<td width=\"50%\" align=\"left\"><a href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('MyLeadsDashlet', 'module', 'Leads');\"><img border=\"0\" src=\"themes\/default\/images\/icon_Leads_32.gif?c=1&developerMode=1295864259\" width=\"32\" height=\"32\" align=\"absmiddle\"><\/a>&nbsp;<a class=\"mbLBLL\" href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('MyLeadsDashlet', 'module', 'Leads');\">Mis Clientes Potenciales<\/a><br \/><\/td>\n\t\t\t\t\n\t\t\t\t\t\t\t<td width=\"50%\" align=\"left\"><a href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('MyContactsDashlet', 'module', 'Contacts');\"><img border=\"0\" src=\"themes\/default\/images\/icon_Contacts_32.gif?c=1&developerMode=889473874\" width=\"32\" height=\"32\" align=\"absmiddle\"><\/a>&nbsp;<a class=\"mbLBLL\" href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('MyContactsDashlet', 'module', 'Contacts');\">Mis Contactos<\/a><br \/><\/td>\n\t\t\t\t<\/tr>\n\t\t\t\t\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t<td width=\"50%\" align=\"left\"><a href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('MyAccountsDashlet', 'module', 'Accounts');\"><img border=\"0\" src=\"themes\/default\/images\/icon_Accounts_32.gif?c=1&developerMode=321663561\" width=\"32\" height=\"32\" align=\"absmiddle\"><\/a>&nbsp;<a class=\"mbLBLL\" href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('MyAccountsDashlet', 'module', 'Accounts');\">Mis Cuentas<\/a><br \/><\/td>\n\t\t\t\t\n\t\t\t\t\t\t\t<td width=\"50%\" align=\"left\"><a href=\"#\" onclick=\"return SUGAR.mySugar.addDashlet('MyEmailsDashlet', 'module', 'Emails');\">...<\/table>\n\t<\/div>\n<\/div>\n\n<div id=\"searchResults\" style=\"overflow-y:auto;display:none;height:400px;\">\n<\/div>","script":""}
(OJO: el string no está completo, el demasiado largo y no se me permite copiarlo acá)

La variable es recibida en ésta función de javascript:

Código:
var success = function(data) {		
				eval(data.responseText);
				dashletsListDiv = document.getElementById('dashletsList');
				dashletsListDiv.innerHTML = response['html'];
				
				document.getElementById('dashletsDialog_c').style.display = '';
				SUGAR.mySugar.dashletsDialog.show();
				SUGAR.mySugar.dashletsDialog.configFixedCenter(null, false) ;

				eval(response['script']);
				ajaxStatus.hideStatus();
			}
El problema es que la línea eval(data.responseText); me saca un error que dice: "Error: Se esperaba ';'"

Alguien tiene idea de porqué se está generando éste error??

Nota: éste código es sacado de una aplicación pre-fabricada llamada SugarCRM, he probado con otras instalaciones y el string que retorna es muy similar y funciona perfectamente.

Gracias de antemano por su ayuda.
  #2 (permalink)  
Antiguo 11/08/2010, 09:47
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Error en función eval();

Código PHP:
echo 'var response = ' $json->encode(array('html' => $html'script' => $script)) .";"
el ultimo ";" es para el interprete js (el mismo te lo dice, se esperaba ;), además si response no esta declarado coloca var, intentalo a ver
  #3 (permalink)  
Antiguo 11/08/2010, 10:05
 
Fecha de Ingreso: julio-2008
Ubicación: Caldas, Antioquia, Colombia
Mensajes: 81
Antigüedad: 16 años, 4 meses
Puntos: 4
Respuesta: Error en función eval();

Gracias por la respuesta,

Ya lo intenté como dices, pero ahora me sale Error: Error de sintaxis.
  #4 (permalink)  
Antiguo 11/08/2010, 13:17
 
Fecha de Ingreso: julio-2008
Ubicación: Caldas, Antioquia, Colombia
Mensajes: 81
Antigüedad: 16 años, 4 meses
Puntos: 4
Respuesta: Error en función eval();

Hola de nuevo.

Ya lo solucioné, resulta que después del string codificado en json, me estaba añadiendo un script de js. Así que en teoría si necesitaba el ';', y aunque no sé porque no funcionó de esa manera ya le quité esta última parte y me funcionó perfecto.

Gracias por tu ayuda.

Etiquetas: eval
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:36.