¿Como pasar parámetros en forma cadena en una función de Javascript?

publicado por: Anonymous

Tengo que pasar los parámetros de la función de mi button en forma de cadena.

Cuando lo hago con PHP me sale bien con el json_encode pero lo mismo quiero hacer con Javascript, pero no me sale.

La imagen de como debe salir

introducir la descripción de la imagen aquí

Como me esta saliendo

introducir la descripción de la imagen aquí

Mi código JS

function ActualizarEstadoAuto() {

   var urlver = $("#verAuto").attr('href');
   var urleditar = $("#editarAuto").attr('href');
    var form = $("#form-estado");
    var urld =  form.attr('action').replace('id',$("#idauto").val());


    var formdata = form.serialize();

    $("#tabla_auto").empty();

    var rows = '';

var i=1;
    $.post({
        url: urld,
        data: formdata,
        dataType: 'json',
        success : function (res) {
          $(res).each(function (key,value) {
              console.log(res);

              rows = rows + '<tr>';
              rows = rows + '<td>'+i+'</td>';
              rows = rows + '<td>'+value.modelo.nombre+'</td>';
              rows = rows + '<td>'+value.categoria.nombre+'</td>';
              rows = rows + '<td>'+value.version+'</td>';
              rows = rows + '<td>'+value.precio_soles+'</td>';
              rows = rows + '<td>'+value.precio_dolares+'</td>';
              rows = rows + '<td>'+value.estado+'</td>';
              rows = rows + '<td>';
              rows = rows + '<a  href="'+urlver+'" class="btn btn-outline btn-success"><i class="fa fa-eye"></i></a> ';
              rows = rows + '<a  href="'+urleditar+'" class="btn btn-outline btn-primary"><i class="fa fa-pencil"></i></a>';
              rows = rows + '<button class="btn btn-outline btn-default" onclick="cambiarEstadoAuto('+ JSON.stringify(value.modelo.nombre)+','+JSON.stringify(value.categoria.nombre)+','+JSON.stringify(value.idAutos)+','+JSON.stringify(value.estado)+')" > <i class="fa fa-exchange"></i></button>';
              rows = rows + '</td>';


    rows = rows + '</tr>';

         i++;
      });

        $("tbody").html(rows);
    }

});


}

El problema es en el button.

solución

El problema es que la hacer JSON.stringify(valor), el valor generado incluye comillas dobles (") y esto provoca que el HTML se rompa.

Solución:

Una solución es, que para aquellos valores que son cadenas, agrega una comilla simple (') escapada (), antes y después de concatenar el valor, en lugar de usar JSON.stringify.

Ejemplo:

rows = rows + '<button class="btn btn-outline btn-default" onclick="cambiarEstadoAuto(''+ value.modelo.nombre+'',''+value.categoria.nombre+'','+value.idAutos+','+value.estado+')" > <i class="fa fa-exchange"></i></button>';
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *