使用ExtJs的Ajax.request

时间:2012-05-11 05:37:20

标签: extjs extjs4

我在从文件加载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请求的末尾是什么?

5 个答案:

答案 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中写入文件并在之后进行检查?