在 Java脚本中发送GET请求时,它不会添加任何参数,但在 EXT-JS 中,它会自动添加CallBack参数。 (我查看过Wireshark& firebug)
我们可以在Juniper MFC URL上的浏览器上看到xml,因为它发送了GET请求,但是当 REQUEST 与任何参数(如'callback parameter')一起发送时,浏览器显示404错误(acc到Firebug,浏览器和Wirehark)。
所以我需要在修改后的加载函数中从 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);
}});
如果主题还有其他解决方案,请建议。
答案 0 :(得分:0)
问题在于:为了使用JsonP(ScriptTagProxy),您的服务器需要将响应包装到javascript方法回调中并返回有效的JavaScript代码。任何其他格式都将失败,因为请求是使用<script>
标记执行的,并且响应将由浏览器的JavaScript引擎解释。
此外,客户端需要能够将回调与原始请求相匹配 - 这就是ExtJs发送回调方法的名称的原因,该回调方法对于该特定请求是唯一的。
但在我们深入研究之前,您是否知道JsonP需要服务器相应地准备响应数据。您的服务器(Juniper MFC)是否支持此功能?
作为替代方案,您可以使用CORS
作为JsonP的替代方法。此技术的侵入性较小,需要为服务器上的HTML文档配置特殊的HTTP标头配置。
ExtJs通过Ext.data.Connection#cors支持CORS
。