0

Java スクリプトではGET リクエストを送信すると、パラメーターを追加しなくても実行されますが、EXT-JSでは自動的に CallBack パラメーターが追加されます。(Wiresharkとfirebugで確認しました)

GET リクエストを送信するため、Juniper MFC URL のブラウザで xml を表示できますが、REQUESTが 'callback parameter' (Firebug、ブラウザ、wireshark に準拠)などのパラメータで送信されると、ブラウザは 404 エラーを表示します。

そのため、変更されたロード関数で、ScriptTagProxyから新しいプロキシ Extend を作成する必要があります。どうすればそれができるか教えてください。

私は次のことをしましたが、運がありません。

        var _Proxy = Ext.extend(Ext.data.MyScriptTagProxy({
         url: 'http://IP:PORT/App',
         method: 'GET',
         nocache: false,
         restful: true 
         }); 

 Ext.define('Ext.data.MyScriptTagProxy' {   
 extend: 'Ext.data.ScriptTagProxy',
 constructor:function(cnfg){
 this.callParent(arguments);//Calling the parent class constructor
      this.initConfig(cnfg);//Initializing the component
      this.on('beforerender',this.beforeRender);
 }});

トピックの別の解決策がある場合は、提案してください。

4

2 に答える 2

0

ついに私は解決策を見つけました、

私の問題:-Qusで言及されています。

私の解決策:-応答テキストを保存するよりも、AJAXを介してサーバーにリクエストを送信し、jQueryを介して同じものをXMLに変換します。次に、この値をXMLStoreのデータフィールドに指定します。サーバーが別のドメインにあるため、POP-Upブロッカーも無効にしました。使用するツール:-ExtDesigner

私のコード:-(コードの品質について申し訳ありません)

var doc = sendReq();

function sendReq() {
    var xmlstr = SendRequest();
    var doc1 = new ActiveXObject("Microsoft.XMLDOM");

    doc1.async = "false";
    doc1.loadXML(xmlstr);
    alert(" Xml is parsing ... ");

    return doc1;
}

function SendRequest() {
    var Url = "http://SERVER_IP:PORT/XMLPATH";

    xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = ProcessRequest;
    xmlHttp.open("GET", Url, false);
    xmlHttp.send();

    return xmlHttp.responseText;
}

function ProcessRequest() {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        if (xmlHttp.responseText != "Not found") {
            var str = xmlHttp.responseText;
        }
    }
}

MyStore = Ext.extend(Ext.data.XmlStore, {
    constructor: function (cfg) {
        cfg = cfg || {};
        MyStore.superclass.constructor.call(this, Ext.apply({
            storeId: 'MyStore',
            data: doc,
            record: 'resourcePool',
            autoLoad: true,
            fields: [{
                name: 'bandwidth',
                type: 'float'
            }, {
                name: 'name',
                type: 'string'
            }]

        }, cfg));
    }
});

new MyStore();
于 2012-09-20T13:08:51.747 に答える
0

ここに問題があります。JsonP (ScriptTagProxy) を使用するには、サーバーが応答を JavaScript メソッドのコールバックにラップし、有効な JavaScript コードを返す必要があります。リクエストは<script>タグを使用して実行され、レスポンスはブラウザの JavaScript エンジンによって解釈されるため、他の形式は失敗します。

さらに、クライアントはコールバックを元のリクエストに一致させる必要があります。これが、ExtJs がその特定のリクエストに固有のコールバック メソッドの名前を送信する理由です。

しかし、これを掘り下げる前に、JsonP ではサーバーがそれに応じて応答データを準備する必要があることをご存知ですか。サーバー (Juniper MFC) はこれをサポートしていますか?

代替手段CORSとして、JsonP の代替として導入されたものを使用できます。この手法は侵襲性が低く、サーバー上の HTML ドキュメントに対して特別な HTTP ヘッダー構成を必要とします。ExtJs はExt.data.Connection#CORS cors を介してサポートします。

于 2012-09-11T15:16:42.113 に答える