我正在使用名为jQuery
的{{1}}库,它允许您模拟/测试真正的AJAX调用。
在我的应用程序中,我可以使用我的实时应用版本的AJAX请求,MockAjax
将拦截AJAX请求并以模拟响应进行响应!
我也在使用另一个名为MockAjax
的库,它类似,但允许您生成模拟JSON响应。
将两个库一起使用,我的应用程序发出一个AJAX请求。 M<ockJson
捕获AJAX请求,然后MockAjax
生成并返回随机MockJson
响应。
在我过去的项目中,这个项目一直很好,直到今天都没有问题......
现在我的应用程序运行良好,我决定了;是时候将JavaScript重组为更结构化的版本了。 (将DOM事件,任务等放入代码段)。
这是我的问题开始的地方......
在我的新代码中,
JSON
抓住MockAjax
请求。AJAX
被调用以获得MockJson
回复在最后一步,它应该将JSON
响应传递回原来的JSON
调用AJAX
函数。它根本就没有!
我在控制台中没有任何错误或任何错误。我在我的AJAX调用Success
函数中设置了一个简单的alert()
,它甚至不会触发警报!
我不确定是否存在某种范围问题或问题是什么。当我的应用程序是平的时,glbal根级别的所有变量和函数都没有结构到应用程序......这一切都奏效了。一旦我把所有东西都移到了对象等等......除了这个没有将MockAjax响应返回给Real Ajax响应的1个问题之外,它都有效!
我删除了95%的应用代码并使用非常小的重新构建它来运行此示例问题。问题的演示就在这里...... http://jsbin.com/vugeki/1/edit?js
应用流程:
success()
在页面加载时运行projectTaskModal.init();
和This fires off projectTaskModal.mockAjax.init();
代码的MockAjax
MockJson
执行projectTaskModal.task.openTaskModal(projectTaskModal.cache.taskId);
请求AJAX
已发送至AJAX POST Request
/gettaskevents
抓住发送到MockAjax
/gettaskevents
然后调用MockAjax
生成MockJson
响应。 JSON
调用该函数,我将JSON respionse打印到控制台中,这样我就可以看到它正在生成它!projectTaskModal.mockAjax.generateTaskEventsJson();
代码中,MockAjax
包含var taskevents
响应,然后将其设置为此... JSON
``this.responseText this.responseText = taskevents;
AJAX `打电话。看来这就是问题所在!它似乎没有将响应返回到最初请求它的原始AJAX代码!这可能是某种范围问题吗?
I believe is what is supposed to be returned to the Applications original
答案 0 :(得分:1)
您的JSBin示例显示您使用的是非常旧版本的Mockjax(1.5.0-pre)。最新版本是最近发布的1.6.2(我现在是核心维护者)。下面是一个更新的JSBin的链接,其中一切似乎都正常工作。您运行的旧版Mockjax是在jQuery 2.0存在之前创建的,因此不支持它(1.6.2确实如此)。
http://jsbin.com/qucudeleve/1/
所以...更新你的Mockjax版本,使用Bower,npm,或者只使用主要帐户(我的)与你自己的叉子(我的)的Rawgit(https://rawgit.com/jakerella/jquery-mockjax/master/jquery.mockjax.js),这是非常过时的!
祝你好运。