2009-12-24 13 views
16

Sto riscontrando un problema nel fare qualcosa di molto semplice in jQuery. Qualcuno può dirmi cosa sto facendo male esattamente?

Se eseguo il codice di seguito, la funzione $ .get sembra mancare (getJSON e altri mancanti). Ma $ se stesso e altre funzioni esistono, quindi so che JQuery si sta caricando.

google.load("jquery", "1.3.2"); 

function _validate(form, rules_file) { 
    $.get('/validation_rules.json',function(data) { 
    alert("hello") 
    }) 
} 

Qualsiasi idea sarebbe molto apprezzata.

Grazie, Rob

Edit: ecco alcune informazioni aggiuntive:

<script src="http://www.google.com/jsapi"></script> 
    <script> 
    google.load("prototype", "1.6"); 
    google.load("scriptaculous", "1.8"); 
    google.load("jquery", "1.3.2"); 
    </script> 
    <script> 
    jQuery.noConflict(); // prevent conflicts with prototype 
    </script> 
    <script src="/livepipe/src/livepipe.js" 
      type="text/javascript"></script> 
    <script src="/livepipe/src/window.js" 
      type="text/javascript"></script> 
    <script src="/livepipe/src/tabs.js" 
      type="text/javascript"></script> 
    <script src="/jquery.maskedinput-1.2.2.js" 
     type="text/javascript"></script> 

risposta

15

La variabile $ proviene da Prototype-js, perché si utilizza il metodo jQuery.noConflict.

Questo metodo ripristinerà la variabile $ in qualsiasi libreria l'abbia prima implementata.

Si consiglia di utilizzare i metodi di jQuery sull'oggetto globale jQuery direttamente, ad es .:

jQuery.get(/* .. */); 
jQuery.getJSON(/* .. */); 
// etc... 

Oppure si può definire un altro variabile più breve come alias se si vuole:

var $j = jQuery.noConflict(); 
2

Se si specifica jQuery.noConflict(), poi $ non è più disponibile da jQuery. utilizzare invece jQuery.get.

2

È inoltre possibile avvolgere le funzioni jQuery in una chiusura e passare in jQuery come il segno "$", ad esempio:

(function($) { 
    function _validate(form, rules_file) { 
     $.get('/validation_rules.json',function(data) { 
     alert("hello") 
     }) 
    } 
})(jQuery) 
38

Questo avverrà anche se si utilizza la versione SLIM di jQuery.

<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script> 

mi ha dato

>jQuery.get 
:undefined 
>jQuery.get() 
:VM7130:1 Uncaught TypeError: jQuery.get is not a function 
    at <anonymous>:1:8 

durante il caricamento della stessa libreria senza l'opzione sottile

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 

funziona bene

jQuery.get() : Object {readyState: 1}

+1

L'esempio di utilizzo di base sul sito Web JQuery dice di utilizzare jquery-x.x.x.slim.min.js e apparentemente non funziona per le chiamate AJAX. Grazie! – bcarroll

Problemi correlati