gpt4 book ai didi

javascript - 无法使用我的插件通过所有 jQuery 1.4.2 Ajax 单元测试

转载 作者:行者123 更新时间:2023-11-29 17:31:32 25 4
gpt4 key购买 nike

我已经创建了一个插件,可以对 jQuery Ajax 函数进行快速处理。 1.4.2运行Ajax单元测试时定位不到一个问题,两次测试都过不了

  1. 带有上下文的 Ajax 事件
  2. jQuery.ajax 上下文修改

测试一有一个总是失败的测试:

 function callback(msg){
return function(){
equals( this, context, "context is preserved on callback " + msg );
};
}

this引用而不是 <div/>标记成为 XPC Cross Origin Wrapper。

My Source Code is here:

My unit tests for the plug-in can be run here:

The failing unit tests can be run here:

需要注意的是 jQuery 1.4.2 Ajax 不处理 FireFox 3.6.8 的服务器响应 301。它将返回为 0。我已经修改了我的 jQuery 库来解决这个问题。

还有一些 JSONP 秒表计时。 BUG #5383 .

也许一些演示问题和这个插件将准备好投入使用。

如有任何帮助,我们将不胜感激。包括设计。提前致谢。

最佳答案

问题是在调用最初传递的 successerror 时,您在 service.monitor 方法中丢失了上下文beforeSendcomplete 处理程序。

查看 ajaxMonitor.service.js,您需要用 .call() 替换每个原始处理程序调用。保持适当的上下文:

1) 在service.monitorSuccess()中:

origSuccess(data, textStatus, request);
//should be:
origSuccess.call(this, data, textStatus, request);

2) 在service.monitorError()中:

origError(request, status, errorThrown);
//should be:
origError.call(this, request, status, errorThrown);

3) 在service.monitorBeforeSend()中:

var abortEarly = origBeforeSend(request);
//should be:
var abortEarly = origBeforeSend.call(this, request);

4) 在service.monitorComplete()中:

var xhr = origComplete(request, status);
//should be:
var xhr = origComplete.call(this, request, status);

我在这里复制了您的测试设置,这样您就可以看到结果:http://ncraver.com/AjaxTest/

请注意一些其他测试失败了...这些与我的更改无关,它们是我的站点未运行 PHP 的结果,因此测试从那些 .php 页面 :)

关于javascript - 无法使用我的插件通过所有 jQuery 1.4.2 Ajax 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3419782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com