2010-03-17 16 views
5

Asp.Net richiede ActiveX per effettuare chiamate Ajax? Sospetto che lo faccia perché senza l'impostazione "inizializza e script controlli ActiveX non contrassegnati come sicuri" in opzioni IE ASP.NET UpdatePanels non funzionano. Ho ragione?ASP.NET richiede ActiveX o no?

Una modifica molto importante qui

non ho avuto dubbi sulla IE6 davvero. Ma sono riuscito a riprodurlo anche su IE8 (Windows 7). Prova a impostare il livello di sicurezza IE in alto. Dopo di che si dovrà impostare:

  • Inizializza ed esegui script controlli ActiveX non contrassegnati come sicuro
  • inviare dati del modulo non crittografati
  • scripting attivo

per essere in grado di utilizzare Asp. NET UpdatePanel. Le ultime due sono OK, ma la prima ... Vi ricordo che questa è IE8

risposta

8

Si riceve questo errore perché gli script accedono all'oggetto XMLHttpRequest (per le richieste AJAX), che è stato implementato tramite ActiveX nelle prime versioni di IE.

Perché è anche il controllo per questo, si ottiene questo avviso. No, non è richiesto per ASP.Net, ma potresti avere problemi con i postback parziale nelle prime versioni di IE se è disabilitato.

+5

Wow, davvero? Internet Explorer 6 deve morire. –

+4

Sì. IE6 deve morire. +1 – StingyJack

+0

@Dave Swersky - Sì, è necessario, tuttavia milioni di aziende hanno applicazioni Web interne legacy eseguite in IE6, alcune delle quali non hanno alcun percorso di aggiornamento. Di conseguenza, sarà necessario fino a quando queste applicazioni non potranno essere aggiornate/sostituite consentendo il lancio di nuovi browser. – BenAlabaster

2

No, non è così.

+0

Questo non è del tutto preciso se si tiene conto dell'intera domanda degli OP. – BenAlabaster

+0

Asp.Net richiede ActiveX per effettuare chiamate Ajax? No. Come è esatto? – UpTheCreek

+0

@Sosh - Perché un'applicazione ASP.NET in esecuzione in IE5/6 richiede ActiveX per poter effettuare le chiamate AJAX. Questi browser non hanno l'oggetto richiesto nella libreria JavaScript per effettuare le chiamate asincrone al server, quindi senza ActiveX, non è possibile utilizzare il bit Asynchronous di AJAX. Il che lascerebbe JAX. – BenAlabaster

2

ActiveX e AJAX sono completamente indipendenti. ActiveX è un meccanismo che consente di distribuire app con piena affidabilità sul Web. AJAX sta per Asynchronous Javascript e XHTML, che è un modo per aggiornare le aree di una pagina web senza postare il tutto al server.

+2

Sbagliato. Sono correlati in IE6. Non esiste un oggetto 'XMLHttpRequest' in IE6. 'JScript' (il motore JavaScript di IE) ti costringe a creare un oggetto' MSXML2.XMLHTTP' tramite 'ActiveXObject'. Inoltre, 'X' in AJAX sta per' XML' – Matt

+1

@Matt - Penso che la parola "related" possa essere fuorviante. C'è sicuramente una dipendenza da ActiveX, ma le due tecnologie non sono correlate di per sé. – BenAlabaster

+0

@BenAlabaster: Ai fini di questa domanda, suppongo che siano correlati. –

-1

Utilizzo di .NET Page Classe http://msdn.microsoft.com/en-us/library/ms178138.aspx È possibile effettuare chiamate AJAX più standard utilizzando JSON. Ma avresti bisogno di imparare AJAX per questo.

+0

Questo non ha senso nel contesto della domanda – StingyJack

+0

Anche io non vedo come uno è più standard di un altro Chi lo dice? –

+0

I significa "più standard" come nel cross browser. UpdatePanel funziona meglio in IE. – MindStalker

0

La semplice risposta è no, non è così. Tuttavia, le incompatibilità del browser possono significare che è necessario l'oggetto ActiveX XmlHttp di Microsoft [ad esempio, le versioni precedenti di IE non supportavano questo nelle loro implementazioni di JavaScript (JScript)]. I browser moderni hanno l'oggetto XmlHttpRequest incorporato in JavaScript e, di conseguenza, ActiveX non è più necessario tranne che per la compatibilità con le versioni precedenti di IE.

1

Ajax utilizza l'oggetto XMLHTTPRequest.

Prima di IE 7 IE veniva utilizzato per implementare questo oggetto utilizzando ActiveX.

Firefox, Safari, ecc. Lo implementano come oggetto nativo. Since IE7 l'oggetto XMLHTTPRequest viene esposto come oggetto di script nativo.

Il problema di ActiveX è un problema di browser piuttosto che un problema di asp.net. Quindi la risposta è no.