【问题标题】:How to send GET request without any parameter in EXT-JS如何在 EXT-JS 中发送不带任何参数的 GET 请求
【发布时间】:2014-02-07 09:46:17
【问题描述】:

Java script 中,当我们发送 GET 请求时,它不添加任何参数,但在 EXT-JS 中它会自动添加 CallBack 参数。 (我检查了 Wireshark 和 firebug)

我们能够在瞻博网络 MFC URL 上的浏览​​器上看到 xml,因为它发送 GET 请求,但是当 REQUEST 使用任何参数(如“回调参数”(acc到 Firebug、浏览器和 wireshark)

所以我需要在修改后的加载函数中从 ScriptTagProxy, 创建一个新的代理扩展。 请告诉我该怎么做。

我做了以下但没有运气。

        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);
 }});

如果主题有其他解决方案也请提出建议。

【问题讨论】:

  • 为什么必须是 ScripTagProxy?
  • HI themel,我需要向另一个域发送请求......所以我可以在那里只发送 GET 请求,没有任何参数。

标签: extjs callback request script-tag


【解决方案1】:

问题是:为了使用 JsonP (ScriptTagProxy),您的服务器需要将响应包装到 javascript 方法回调中并返回有效的 JavaScript 代码。任何其他格式都会失败,因为请求是使用<script> 标签执行的,并且响应将由浏览器的 JavaScript 引擎解释。

此外,客户端需要能够将回调与原始请求相匹配 - 这就是 ExtJs 发送回调方法名称的原因,该名称对于特定请求是唯一的。

但在我们深入研究之前,您是否知道 JsonP 需要服务器相应地准备响应数据。您的服务器 (Juniper MFC) 是否支持此功能?

作为替代方案,您可以使用 CORS,它是作为 JsonP 的替代方案引入的。这种技术侵入性较小,并且需要为服务器上的 HTML 文档进行特殊的 HTTP 标头配置。 ExtJs 通过Ext.data.Connection#cors 支持CORS

【讨论】:

  • 您好 misaecko,(1) CORS 仅与 XDomainRequest 一起使用,出于安全原因,服务器不允许此对象。 (2) 这些MFC设备(服务器)只回复一个文本格式的xml,没有回调,没有包装数据。所以请建议我:-(1)如何在没有回调参数或任何参数的情况下向其他域中的服务器发送获取请求。或 (2) 如何覆盖 ScriptTagProxy 的加载功能,我可以停止在 My Request 中添加 CallBack 参数。提前致谢,感谢 Mayank。
  • re (1) CORS/XDomainRequest:这仅适用于 IE,对吗?启用 CORS (ExtJs4.1) 时,ExtJs 将使用 XDomainRequest。其他的都已经说了……
【解决方案2】:

终于找到了解决办法,

我的问题:- 在 Qus 中提到。

我的解决方案:- 我通过 AJAX 向服务器发送请求,而不是保存响应文本,然后通过 jQuery 将其转换为 XML。然后将此值赋予 XMLStore 的数据字段。 由于服务器在另一个域中,所以也禁用了弹出窗口阻止程序。 工具使用: - 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();

【讨论】:

    猜你喜欢
    • 2019-10-18
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    相关资源
    最近更新 更多