2015-06-15 7 views
5

Ho un sito con una fisarmonica e qualche javascript. In Firefox tutto funziona come dovrebbe, ma in IE11 ottengo l'erroreJavaScript in IE11 mi dà errore di script 1003

SCRIPT1003: Previsto ':'

ho ristretto la scelta a questo pezzo di codice nel mio file .js:

var nmArray = new Array(); 

function saveplayers() { 
    var x; 

    for (x=0;x<32;x++) { 
    var y = "i"+eval(x+1); 
    nmArray[x]=document.getElementById(y).value; 
    } 
    var request = $.ajax({ 
    type: "POST", 
    url: "savep.php", 
    data: ({ nmArray }), 
    cache: false 
    }); 
} 

L'errore si lamenta ci dovrebbe essere un due punti dopo nmArray in ({ nmAray })

Se prendo questa funzione, il mio sito funziona di nuovo. Per il debug ho rimosso il mio codice HTML e non sto nemmeno chiamando questa funzione. Ho appena incluso il file .js.

+0

Grazie ragazzi per le risposte rapide. Ora capisco perché funziona in FF e non in IE. – notaverygoodprogrammer

risposta

4

La sintassi ({nmArray}) in un browser che supporta ES6 è una scorciatoia per {nmArray: nmArray}. IE11 non supporta questa funzione (in base all'errore che stai ricevendo), quindi dovrete riscrivere come:

data: ({ nmArray: nmArray }), 

Vedi qui per un esempio: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#New_notations_in_ECMAScript_6

nota che in questo caso è possibile omettere la confezione ()

data: { nmArray: nmArray }, 
+0

Dolce IE. Grazie per non aver seguito gli standard ** AGAIN ** –