设置:
有问题的程序试图通过AJAX调用将表单数据发布到与调用者相同的包中包含的目标过程。这适用于使用安全连接(HTTPS)的站点。这里使用的技术是PLSQL和DOJO JavaScript库。开发工具是basically a text editor。
代码段:
> function testPost() {
>> dojo.xhrPost( {
url: ''dr_tm_w_0120.test_post'',
form: ''orgForm'',
load: testPostXHRCallback,
error: testPostXHRError
});
}
> function testPostXHRCallback(data,ioArgs) {
>> alert(''post callback'');
try{
dojo.byId("messageDiv").innerHTML = data;
}
catch(ex){
if(ex.name == "TypeError")
{
alert("A type error occurred.");
}
}
return data;
}
>
function testPostXHRError(data, ioArgs) {
>> alert(data);
alert(''Error when retrieving data from the server!'');
return data;
}
问题:
使用IE6(整个用户群使用)时,从服务器发回的响应是404错误。
观察:
该程序在Firefox中运行良好
调用程序无法针对同一包中的任何程序
调用程序可以定位到外部站点(http,https)
包中的其他AJAX调用不是表单数据的帖子工作正常
我搜索了 internets 并咨询了高级技术团队成员,并没有发现任何令人满意的解决问题的方法。
*在Dojo支持论坛上试过Q&A。
问题:
您推荐哪些故障排除技巧?
您建议使用哪些故障排除工具进行HTTPS分析?
关于问题可能是什么假设?
任何不是完全(坏)黑客的解决方法的想法?
版。解决方案
lomaxx,thx为fiddler小费。你不知道如何获得它并将其用作调试工具是多么棒。启动后,这就是我发现的以及我如何修复它(至少在短期内):
> ef Fri, 8 Aug 2008 14:01:26 GMT dr_tm_w_0120.test_post: SIGNATURE (parameter names) MISMATCH VARIABLES IN FORM NOT IN PROCEDURE: SO1_DISPLAYED_,PO1_DISPLAYED_,RWA2_DISPLAYED_,DD1_DISPLAYED_ NON-DEFAULT VARIABLES IN PROCEDURE NOT IN FORM: 0
在看到来自服务器的消息后,我再次向Fiddler踢了一下,看看还能从中学到什么。发现有一个WebForms选项卡,显示Web表单中的值。你不知道吗,上面的“xxx_DISPLAYED_
”字段就在其中。
我还不太明白为什么这些字段存在,因为我没有在网络PLSQL
代码中明确创建它们。但我现在明白目标程序必须将它们作为参数包含在内才能正常工作。同样,这只适用于IE6
,因为Firefox工作正常。
那么,短期的答案和黑客来解决它。希望在这方面做一点工作可以更好地理解这里的基本面。
答案 0 :(得分:4)
第一个停靠点是启动Fiddler并分析进出浏览器的数据。
看看标题,实际调用的url和传递给AJAX方法的params(如果有的话),看看它们在到达服务器之前是否一切都很好。
如果这一切看起来都没问题,有没有办法可以通过日志记录或AJAX方法跟踪来验证它实际上是在点服务器?
ed:我要尝试的另一件事就是使用非基于ajax的调用在服务器上调用AJAX方法,并分析fiddler中的流量并比较两者。