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

标签 javascript ajax jquery

我创建了一个插件来鸭击 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/

相关文章:

jquery - 设置复选框标签的颜色

javascript - 滚动到带有粘性导航和侧边栏的部分

javascript - JS : Array has no method 'keys' (Cordova, 安卓)

javascript - 如何将数组中的每组数字相加? (javascript)

javascript - 为什么我的 JS 程序无法运行?

ajax - 在 Postgres 中检索数据库的列和表

jquery - 设置 jQuery Mobile 脚本

javascript - jQuery 的两个 onclick 操作的变量

javascript - 在 cujojs rest.js 上中止 Xhr

javascript - 当我的 React 组件通过 AJAX 获取时显示加载旋转器/gif 的最佳方式?