2011-05-22 35 views
18

Estoy intentando ejecutar jQuery y WebMethods con ASP.NET; He añadido un ScriptManager a la página principal , y un contenido en la página de contenido

<asp:Content ID="ch" ContentPlaceHolderID="cHead" runat="server"> 
    <script language="javascript" type="text/javascript"> 
     $(document).ready(function() { 
      alert("hi"); 
     }); 
    </script> 
</asp:Content> 

Sin embargo esto nunca incendios, lo que me estoy perdiendo?

+1

La JavaScript trabaja en jQuery 1.6, como se muestra aquí: http://jsfiddle.net/VRA98/ Otra cosa es incorrecto. ¿Su navegador indica un ícono de error para JavaScript? Cuando ves el origen de tu página, ¿está el JavaScript allí? (Tal vez el código en el lado del servidor está ocultando un control que contiene el JavaScript). –

+1

publique su código de inclusión de jquery. – kobe

Respuesta

26

Verifique los siguientes pasos.

  1. ¿Incluyó jQuery
  2. comprobar si hay errores en Firebug

Esas cosas deben solucionar el problema

+0

Si esto no ayuda y no obtiene errores, intente poner algunos 'console.log ('step info')' s a través de los pasos y observe si son o no todos ellos salida a la consola en el momento correcto ... porque: jQuery CAN *** silencioso *** salir en algunos casos de error ... –

8

En lugar de utilizar esto:

$(document).ready(function() { /* your code */ }); 

Utilice esta:

jQuery(function($) { /* your code */ })(jQuery); 

Es más conciso y hace lo mismo, también no depende de la variable $ para ser el objeto jQuery.

+2

Verifique que comenten, ese código no funcionará. El comentario debe ser '/ * su código * /' y su ejemplo sería correcto – sg3s

+0

Comentarios editados por @ sg3S. –

+3

@harshal lonare, sí funciona con ese código, pero ¿por qué no con $ (documento)? – wolfgang

1

Esto sucederá si la página de host es HTTPS y la ruta de origen de JavaScript incluida es HTTP. Los dos protocolos deben ser iguales, HTTPS. El letrero de la cola del testigo sería marcar debajo de Firebug y observar que el JS tiene "acceso denegado".

17

Una posibilidad cuando ready deja de funcionar es que usted tiene el código Javascript en alguna parte que está lanzando una excepción en una llamada $(document).ready(...) o $(...), que se detiene el procesamiento del resto de los bloques ready. Identifique una sola página en la que esto está ocurriendo y examínela para detectar posibles errores en otros lugares.

+2

Tuve un problema similar, de hecho hubo un par de errores relacionados con jQuery en mi página. Una vez que se arreglaron, todo funcionó. – Luoruize

+0

Para mí, esto ocurrió porque había olvidado hacer una 'instalación de bower' para instalar algunas bibliotecas de JS de terceros. Cuando intenté cargar uno de los archivos de esas bibliotecas, Laravel creó una página 404 en su lugar, lo que obviamente arrojó un error debido a que contenía código que no era JS. –

+0

¡Desearía haber encontrado su respuesta antes! Gracias. – taco

1

Había copia pegada a mi línea js de algún otro proyecto .php, dentro de ese bloque de código hubo alguna php código de salida de un cierto valor, ahora ya que la variable no se ha definido en mi nuevo archivo, se estaba produciendo el típico phpundefined warning/error, y debido a que el código js estaba siendo dañado, y no respondía a ningún evento, ¡incluso alert("xyz"); fallaría silenciosamente! Aunque la línea errónea estaba muy cerca del final del archivo, todavía el js también se moriría,

sin ningún error !!! > :(

Ahora bien, una cosa confusa es que la consola depurador/salida no dio indicios/error/advertencia alguna, el js estaba muriendo en silencio.

así que trata de comprobar si tiene php línea estará con el js, y ver si está produciendo algún error. Una vez eliminado/ordenado, su js debería funcionar bien.

0

Una posibilidad, echar un vistazo:

<script language="javascript" type="text/javascript" src="./jquery-3.1.1.slim.min.js" /> 

vs

<script language="javascript" type="text/javascript" src="./jquery-3.1.1.slim.min.js"></script> 

El primer método es realmente malo, sin embargo, el navegador no complaims en absoluto. Debe asegurarse de que efectivamente está cerrando la etiqueta javascript de la manera correcta.

1
function pageLoad() { 
    console.log('pageLoad'); 
    $(document).ready(function() { 
     alert("hi"); 
    }); 
}; 

su ScriptManager el Ajax haciendo que el problema uso pageLoad() en lugar