我有一个静态网站,我在本地计算机上使用jetty服务器(用于测试)和github页面(实时)运行。
两个站点的源代码完全相同。 我使用相同的浏览器(Mozilla Firefox)进行下面的测试 我最近使用以下代码来获取jQuery Ajax
$.ajax({
url: jsonFilePath,
error: function (response) {... },
success: function (responsedata) {
var responsedata = JSON.parse(latestData);
...
上面的代码在我的本地服务器上运行时工作正常,但在github服务器(同一浏览器)上运行时失败
github for this reason失败了。它在定义dataType之后开始工作,如下所示
$.ajax({
url: jsonFilePath,
dataType: "json",
...
我的问题是,为什么在本地服务器上测试期间未捕获到此内容?所有的liberaries,data,json,js,jQuery文件都是一样的。 可能导致这种行为差异的原因是什么?
答案 0 :(得分:5)
您尚未在传递给dataType
的对象中指定$.ajax
选项。因此默认为auto
。这有两个影响:
如果服务器提供JSON并使用Content-Type说,"这是JSON"然后jQuery会在将结果传递给responsedata
之前对其进行解析。这就是Github上发生的事情
如果服务器提供JSON但是使用Content-Type说明"这是纯文本" (即如果服务器配置错误)那么jQuery不会这样做,你将在responsedata
中获得纯文本字符串。您将遇到与其他错误内容类型类似的问题。