solucion error converting javascript jquery json tablednd

solucion - javascript error converting circular structure to json



Error no detectado: conversión de estructura circular a JSON (2)

Tengo un tableDnD arrastrar y soltar con JSON.stringify:

jQuery(document).ready(function() { jQuery("#Table").tableDnD({ onDragClass: "danger", onDrop: function(table, row) { jQuery.ajax({ url: "ajax.php", type: "post", data: { ''rows'' : JSON.stringify(table.tBodies[0].rows) }, dataType: ''html'', success: function(reponse) { if(reponse) { //alert(''Success''); } else { alert(''Erreur''); } } }); } }); });

Tengo este mensaje de error:

Error no detectado: conversión de estructura circular a JSON

Tengo el problema sólo en Chrome.


Debe usar la propiedad .innerHtml del elemento DOM en lugar de convertir todo el elemento DOM. Así que deberías estar buscando tener algo como:

JSON.stringify(table.tBodies[0].innerHTML)


No debes convertir un elemento DOM a JSON directamente.

Si bien, como ya experimentó, falla, por ejemplo, en Chrome, los resultados también pueden ser inesperados.

La razón de esto es porque los datos son circulares:

Un nodo tiene la propiedad childNode contiene todos sus hijos y la propiedad parentNode apunta al padre.

El formato JSON no admite referencias, por lo que deberá seguir las propiedades hasta que se alcance un final, pero debido a que un hijo apunta a su padre que tiene una lista de sus hijos, este es un bucle sin fin, esa es la razón por la que obtiene el error:

Error no detectado: conversión de estructura circular a JSON

Incluso si esto se resuelve con el navegador, puede tener otros problemas. Porque no solo existen childNodes sino también childElements . Lo mismo se parentNode a parentNode / parentElement , entonces también tiene nextSibling , prevSibling , firstChild , lastChild , ... que probablemente también se seguirán, por lo que terminaría en el archivo JSON aterrador y grande que contiene una serie de datos duplicados.