我在从文件加载JSON内容时遇到困难。 console.log
打印"server-side failure with status code 0"
,表示请求失败。
我的JSON文件网址正确,文件出现在指定的地址。
Firebug显示错误:
"NetworkError: 405 Not Allowed - http://localhost:8080/4910.json?_dc=1336714070619
,Net标记显示状态405 not allowed
。
关于为什么会发生这种情况的任何想法?
Ext.Ajax.request({
url: 'http://localhost:8080/4910.json',
success: function(response, opts) {
var obj = Ext.decode(response.responseText);
console.log(obj[0].name);
},
failure: function(response, opts) {
console.log('server-side failure with status code ' + response.status);
}
});
此外,将参数_dc=1336714070619
添加到GET请求的末尾是什么?
答案 0 :(得分:7)
仅供参考..
对于谁正在添加参数_dc 。 dc代表禁用缓存 默认情况下,extjs中的每个请求都会自动使用 _dc 附加请求变量。更多info
如果您不想要它,只需将disableCaching: false
设置为您的请求
Ext.Ajax.request({
disableCaching: false,
url: 'http://localhost:8080/4910.json',
......
});
为什么不允许
尝试打开没有_dc
的JSON URL路径,或者您的服务器可能有问题。
答案 1 :(得分:3)
如果您访问的文件位于同一个域中,则可以直接在其中指定相对路径。
如果请求是跨域的: 如果您需要从另一个域读取数据并且无法设置代理服务器(某些软件在您自己的域的Web服务器上运行并透明地将请求转发到domainB.com,使其看起来实际上来自domainA.com) ,您可以使用Ext.data.proxy.JsonP和一种称为JSON-P(带填充的JSON)的技术,只要domainB.com上的服务器设置为支持JSON-P,它就可以帮助您解决问题响应。有关更多详细信息,请参阅JsonPProxy的介绍文档。
检查 http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.proxy.JsonP
答案 2 :(得分:2)
我认为你应该使用url
的相对路径(这里相对于js文件是相对的),例如,如果json文件与你的文件夹在同一个文件夹中它应该是4910.json
js文件。
答案 3 :(得分:1)
也许,错误的服务器端口?
这对我有用:
Ext.Ajax.request ({
url: 'http://localhost:80/sof/json.json' ,
disableCaching: false ,
success: function (res) {
// JSON is {name:val, type:val}
console.log (Ext.JSON.decode(res.responseText).name);
} ,
failure: function () {
console.log ('error');
}
});
答案 4 :(得分:0)
检查您的网络服务器设置。我在OSX上的MAMP有localhost:8888。
每次我在localhost上使用文件时,我都会使用相对路径。
您是否尝试过使用CHMOD更改文件权限?也许你甚至无法在浏览器中打开它?
您是否曾尝试从php中写入文件并在之后进行检查?