【问题标题】:Ajax.request using ExtJs使用 ExtJs 的 Ajax.request
【发布时间】:2012-05-11 05:37:20
【问题描述】:

我在从文件加载 JSON 内容时遇到了困难。 console.log 打印 "server-side failure with status code 0",表示请求失败。

我的 JSON 文件 URL 正确,并且文件存在于给定地址。

Firebug 显示错误:

"NetworkError: 405 Not Allowed - http://localhost:8080/4910.json?_dc=1336714070619

并且网络标签显示状态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);
                   }
                });

另外,在 GET 请求的末尾添加参数_dc=1336714070619 是什么?

【问题讨论】:

    标签: extjs extjs4


    【解决方案1】:

    仅供参考..

    对于谁在添加参数_dc。 dc 代表禁用缓存
    默认情况下,extjs 中的每个请求都会自动在请求变量后面附加 _dc。更多info

    如果您不想要它,只需将disableCaching: false 设置为您的请求

    Ext.Ajax.request({
        disableCaching: false,
        url: 'http://localhost:8080/4910.json',
        ......
    });
    

    对于为什么不允许
    尝试打开不带_dc 的 JSON URL 路径,或者您的服务器可能有问题。

    【讨论】:

      【解决方案2】:

      如果你访问的文件在同一个域中,你可以直接给出那里的相对路径。

      如果请求是跨域的: 如果您需要从另一个域读取数据并且无法设置代理服务器(某些软件在您自己域的 Web 服务器上运行并透明地将请求转发到 domainB.com,使其看起来像是来自 domainA.com) , 您可以使用 Ext.data.proxy.JsonP 和一种称为 JSON-P (JSON with Padding) 的技术,只要 domainB.com 上的服务器设置为支持 JSON-P,它就可以帮助您解决问题回应。详情请参阅 JsonPProxy 的介绍文档。

      检查 http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.proxy.JsonP

      【讨论】:

        【解决方案3】:

        我认为您应该使用url 的相对路径(这里的相对路径是与js 文件相比),例如如果json 文件与您的js 文件位于同一文件夹中,则它应该是4910.json

        【讨论】:

          【解决方案4】:

          也许,错误的服务器端口?

          这对我很有用:

          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');
              }
          });
          

          【讨论】:

            【解决方案5】:

            检查您的网络服务器设置。我在 OSX 上的 MAMP 有 localhost:8888。

            每次我在 localhost 上使用文件时,我都会使用相对路径。

            您是否尝试过使用 CHMOD 更改文件权限?也许您甚至无法在浏览器中打开它?

            您是否尝试过从 php 中写入文件并随后检查?

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-03-18
              • 1970-01-01
              • 2010-11-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多