6

设置:
有问题的程序尝试通过 AJAX 调用将表单数据发布到与调用者相同的包中包含的目标过程。这是为使用安全连接 (HTTPS) 的站点完成的。这里使用的技术是PLSQLDOJO JavaScript 库。该开发工具基本上是一个文本编辑器

代码片段:

> 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 调用工作正常。
我搜索了互联网并咨询了高级技能的团队成员,并没有发现任何令人满意的解决问题的方法。*在 Dojo 支持论坛上
尝试过问答。

问题:
您推荐哪些故障排除技术?
对于 HTTPS 分析,您推荐哪些故障排除工具?
关于问题可能是什么的任何假设?
对于不是完全(坏)黑客的解决方法有什么想法吗?

埃德。解决方案
lomaxx,感谢提琴手提示。您不知道获得它并将其用作调试工具有多棒。启动后,这是我发现的以及我如何修复它(至少在短期内):

> 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_上面的“”字段就在里面。

我还不明白为什么这些字段存在,因为我没有在 WebPLSQL代码中明确创建它们。但我现在确实明白目标过程必须将它们作为参数包含在内才能正常工作。同样,这仅适用于IE6我,因为 Firefox 运行良好。

好吧,这是短期的答案并破解它来修复它。希望在这个领域做更多的工作能够更好地理解这里的基本原理。

4

1 回答 1

4

第一个调用端口是启动Fiddler并分析进出浏览器的数据。

看看标头、实际调用的 url 和传递给 AJAX 方法的参数(如果有的话),看看在到达服务器之前是否一切正常。

如果看起来一切正常,有什么方法可以通过日志记录或 AJAX 方法中的跟踪来验证它实际上是在访问服务器吗?

ed:我会尝试的另一件事是构建一个测试页面,以使用基于非 ajax 的调用在服务器上调用 AJAX 方法,并分析 fiddler 中的流量并比较两者。

于 2008-08-08T03:47:22.703 回答