0

ローカルで動作する必要がある HTML5 で webapp を開発しています。

データモデルを設計するためのアプリであり、整形式の XML ファイルからテーブル情報を解析し、それらを html にレンダリングする必要があります。カスタム ビューを作成して、XML からテーブルを解析し、URL の GET パラメータを介して名前を渡すスクリプトに指示します。

これを行うには、jQuery のメソッドを使用しています。Firefox$.ajaxで開発したところ、すべてうまくいきました。しかし、IE9 で動作する必要があり、$.ajax と XMLHttpRequest の両方を使用すると、「アクセスが拒否されました」というエラーが表示されます。

Firefoxで動作するスクリプトは次のとおりです。

$(document).ready(function () {
    // // rilevo la stringa  dell'URL che contiene i nomi delle tabelle da visualizzare
    var query = window.location.search.substring(1);
    // se c'è
    if (query){
        // alert('query= '+query);
        var tabelle = query.split('&');
        // alert('lunghezza array tabelle= '+tabelle.length);

        $.ajax({
            type: "GET",
            url: "tables.xml",
            dataType: "xml",
            async: false,
            success: function(xml) {
                alert('start loading tables');
                // var i_success = 0;
                for(var i_success=0; i_success<tabelle.length; i_success++){
                    $(xml).find('tabella').each(function(){
                        // alert('pars+write tabella '+i_success+': id= '+tabelle[i_success]);
                        if ($(this).find('id').text() == tabelle[i_success]) {
                        var id = $(this).find('id').text();
                            // //verifico che la tabella sia tra quelle passatemi nell'URL
                            // var found = $.inArray(id, tabelle) > -1;
                            var classe = $(this).attr('classe');
                            var title = $(this).find('title').text();
                            $('<div class="drag tab" id="'+id+'"></div>').html('<h2 class="th">'+title+'</h2>').appendTo('#content');
                            var i_celle = 0;

                            $(this).find('cella').each(function() {
                                var id_cella = $(this).find('id_cella').text();
                                var content = $(this).find('content').text();
                                $('<div class="td '+id_cella+'">'+content+'</div>').appendTo('#'+id);
                                i_celle++;
                            }); 
                        // continue;
                        } else {
                            return;
                        }
                    });// end find each
                } //end for
            },//end success

            complete: function(){
                toggleFields();
                connections();
                toggleBg();
                alert('complete');
            },//end complete
            error: function(richiesta,stato,errori){
                $("#content").html("<strong>Caricamento delle tabelle fallito:</strong><br/>"+stato+" "+errori);
            }//end error
        }); //end ajax
    } else {
        alert('Non sono state fornite tabelle da visualizzare...');
    }

});`

ここで、IE用に実装しようとしているコード:

$(document).ready(function () {

    // // rilevo la stringa  dell'URL che contiene i nomi delle tabelle da visualizzare
    var query = window.location.search.substring(1); 
    // se c'è
    if (query){
        alert('query= '+query);
        var tabelle = query.split('&');
        alert('lunghezza array tabelle= '+tabelle.length);

        var xmlhttp;
        if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
            alert('Questo browser supporta XMLHttpRequest! :)');
            xmlhttp=new XMLHttpRequest();
            alert('XMLHttpRequest creata con successo');

            xmlhttp.open("GET","tables.xml",true);
            alert('richiesta aperta');
            xmlhttp.send();
            alert('Request inviata con successo');
        } else {// code for IE6, IE5
            alert('XMLHttpRequest non supportata da questo browser');
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }

    } else {   
        alert('Non sono state fornite tabelle da visualizzare...');
    }// end if query

}); // end document.ready

誰でも私を助けてもらえますか?気が狂いそう..

4

1 に答える 1

0

なんとか直りました。

すべてのデータを JSON オブジェクト INLINE で渡すことにしました。

を使用して、HTML DOMでそれを行うことができます

<script type="application/json" id="stuff>

json code here

</script>

var myVar=JSON.parse(document.getElementById('stuff').innerHTML); を使用して js で呼び出します。これは HTML% 有効です: http://dev.w3.org/html5/spec/Overview.html#the-script-element

js に直接記述し、var のように呼び出すことにしました。var tabObj = {"tabelle": json コード }; それを解析する必要があるかどうか、または必須ではないかどうかをまだ理解する必要があります。

それはすべての人々です。助けてくれてありがとう、私はそれが奇妙な質問だったことを知っています.

于 2013-07-19T16:26:17.577 に答える