He devanaba los sesos y se fue a través de él, buscando ejemplos y no entiendo por qué firebug es tirar «e.nodeName no está definido» error..

Es probable que haya algo estúpido poco soporte fuera de lugar o algo que necesite un segundo par de ojos para ver..

Sólo estoy haciendo un poco simple ajax post para algunas entradas, pero este es mi primer post nunca, y estoy cerca de tirar un poco de cabello de mi cabeza debido a que el número de errores que me he encontrado hasta ahora..
http://jsfiddle.net/JohnnyDoe/aQYra/

Mi script

<script type="text/javascript">
    $(document).ready(function () {
        $('.hexen').after('<div class="ui-state-default ui-corner-all ui-icon-disk ui-icon saveButton" onClick="save();" title="Save" style="float:left; height:20px;" onclick="save()"></div><br />') //ui icon
    .keypress(function () {
        $(this).next('.saveButton').show(); //appends ui icon
    });

        $('.saveButton').hide().click(function () {
            $(this).hide(); //removes ui icon on click
        });

        $('.ui-state-default').hover(

    function () {
        $(this).addClass('ui-state-hover');
    }, function () {
        $(this).removeClass('ui-state-hover');
    } //ui icon hover
    );
    });

    function save(value) {
        $('.hexen').each(function () {
            var id = null;
        });
        if ($(this).val() !== '') {
            id = $(this).attr('id');
        }
    }
    $.ajax({
        type: "POST",
        url: "Default.aspx",
        data: "{Id: " + $(".hexen").attr('id') + ", Value: " + $(".hexen").val() + "}",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            console.log(data);
        }
    });
</script> 

Mi HTML

<div id="unvolitive">
<input type="text" class="hexen" id="Text1"/>
<input type="text" class="hexen" id="Text2"/>
<input type="text" class="hexen" id="Text3"/>
<input type="text" class="hexen" id="Text4"/>
<input type="text" class="hexen" id="Text5"/>
</div> 

Gracias de antemano

  • Donde en su código está usted recibiendo el error? La carga, en la llamada AJAX, en los controladores de eventos, etc? Es generalmente mejor para mostrar solo el código implicado en el error (y si se puede averiguar eso con el fin de hacer la pregunta, que a menudo son a mitad de camino a la respuesta de usted).
  • Firebug dice en su «línea de 16».. Que es $(this).hide(); // removes ui icon on click no veo nada de malo en esto
InformationsquelleAutor Johnny Doe | 2012-01-10

4 Comentarios

  1. 9

    Creo que, a partir de un breve violín de la prueba, que el problema viene de la mezcla normal de jQuery controladores de eventos y la onclick controlador se está definiendo en la etiqueta de la cadena (su save función).

    No estoy seguro de lo que estás tratando de hacer en save; el each llamada no hace nada:

    $('.hexen').each(function () {
        var id = null; //all this does is set a local variable
    });

    pero lo que es más importante, la forma en que ha organizado esto con onclick, this será indefinido, por lo que la siguiente línea no funciona:

    if ($(this).val() !== '') {

    En este contexto, this se refiere a la window objeto, por lo que creo que es la razón por la que usted está recibiendo el error. Para solucionarlo, se debe controlar la función de guardar en el jQuery-asignado haga clic en controlador:

    $('.saveButton').hide()
        .click(function () {
            $(this).hide(); //removes ui icon on click
            var id;
            //get the associated input
            var $input = $(this).prev('.hexen');
            if ($input.val() !== '') {
                id = $input.attr('id');
            }
            console.log(id);
            //presumably, do something with id now...
    });

    Ver un trabajo de violín.

  2. 7

    El error ocurre en save() que utiliza this fuera de contexto.. (se refiere a la ventana en la actualidad)

    Probablemente debe ser

    function save(value) {
        $('.hexen').each(function() {
            var id = null;
            if ($(this).val() !== '') {
                id = $(this).attr('id');
            }
        });
    }

    Me movido la if parte dentro de la each controlador..

    • Hmm – buena idea, creo que lo has adivinado el OP de la oscura intención aquí, mejor que yo.
    • Aunque no estoy seguro acerca de la sangría, porque el código original tiene muchas partes que no hacen nada, o al menos no lo que yo creo que el OP espera.. Tales como el uso de $('.hexen').val() que devuelve sólo la primera aparición etc..
  3. 1

    Se define en la llamada ajax dataType: json, por lo que su llamada ajax espera válido json regreso de su servidor. Parece que usted no devuelve json válido. Recomiendo la eliminación de esta línea (contentType así). Si este no es el caso, entonces no sé lo que es. 🙂

    Por la forma, se puede definir datos como este:

    data: {
      Id: $(".hexen").attr('id'),
      Value: $(".hexen").val()
    }

    No hay necesidad de stringify en su propio.

    • Buena sugerencia.. Pero sigue tirando el e-nodename error
    • ¿ajax Llamada usada fuera de $(document).ready(...)? Sin duda, esto es un error.
    • Una cosa más: debe quitar los onclick(...) de su after función. Primero de todo hay dos de ellos y lo que es más importante todavía reemplazar en $('.saveButton').hide().click(function () {...});. Lanza extraño errores en Chrome.
    • en realidad, $(document).ready(...) sólo asegura que el DOM esté listo para la manipulación – si la llamada AJAX, no altera el DOM en la devolución de llamada, no hay ninguna razón para esperar el ready evento para llamar.
    • Pero intenta leer datos en su llamada ajax de DOM.
    • ah, tienes razón en este caso. Pero, en general, que puede uso $.ajax() fuera de $(document).ready(...) si no hay ninguna DOM cosas involucradas.
    • Tienes razón, pero hacer la llamada ajax al principio es un poco inútil, no crees? Usted puede simplemente cargar los datos cuando se carga la página! En general esto no es un error (aunque en este contexto no lo es), pero esta es una mala práctica, en mi humilde opinión.
    • lo que si se carga dinámica de datos en una página estática? O la carga de datos con JSONP de un servicio no es el control? Hay buenas razones para ello, aunque no creo que el OP del caso de uso es uno de ellos.
    • Bueno, nunca se carga de datos desde el exterior de servicio antes de su DOM se carga ahora qué? Este es el contexto del que estamos hablando. Por lo menos yo no la vea. Pero yo podría estar equivocado. 🙂 Me voy a la cama – buenas noches a todos! 🙂

  4. 1

    Es difícil saberlo sin un vínculo de trabajo a decir de donde es estancarse, pero te puedo decir que el JSON que vas a publicar no es válido.

    "{Id: " + $(".hexen").attr('id') + ", Value: " + $(".hexen").val() + "}"

    debe ser

    "{'Id': '" + $(".hexen").attr('id') + "', 'Value': '" + $(".hexen").val() + "'}"

Dejar respuesta

Please enter your comment!
Please enter your name here