Ajax响应中的尾随空格
我正在尝试使用Qunit来测试一些代码,但我在Ajax调用方面遇到了一些问题。 我甚至无法使用jQuery方法使用最简单的Ajax调用来正确测试它们。 问题似乎是,无论我做什么,都会在textResponse上附加一个尾随空格。
我的初始代码是这样的
asyncTest('Ajax calls', function() { expect(1); $.get('ajax.txt', {}, function(response) { equal(response, 'foo', 'Ajax calls work correctly'); }); setTimeout(function() { start(); }, 600); });
其中ajax.txt
是一个包含ajax.txt
字符foo
的文本文件。 报告失败了
Ajax调用正常工作,预期:“foo”结果:“foo”,diff:
“foo”“foo”
然后我尝试了以下内容:
- 我测试了“foo”(包括尾随空格)
- 我在测试之前完成了
response.replace(' ', '')
- 我改变了ajax.txt文件的字体编码
- 我每次都在清理缓存时在Firefox和Chrome中测试过它
- 我已经手动测试了警报内的相等性,即使是使用==比较
但在任何情况下我都无法得到一场比赛。 例如,在第一个版本中,我得到了令人费解的答案
Ajax调用正常工作,预期:“foo”结果:“foo”,diff:“foo”
我现在有点生气了。 我可能做错了什么?
您可以$.trim()
(jQuery修剪,因为IE <9本身没有它)结果,如下所示:
equal($.trim(response), 'foo', 'Ajax calls work correctly');
为什么会这样? 这可能是一个格式化错误,例如Unix与Windows行结尾在你身上蔓延。
我有类似的 – 是的,非常可能是行结尾; 我不得不删除“\ r”和“\ n”以确保它正常工作。 获取您所使用的内容的另一种方法是使用JSON。 获取AJAX调用以返回(例如)
{ "Text":"foo" }
然后测试如下:
equal(response.Text, 'foo', 'Ajax calls work correctly');
您需要在jQuery AJAX调用中将AJAX返回类型设置为json。