Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ajax.request using ExtJs

Tags:

extjs

extjs4

I'm having difficulty loading JSON content from a file. console.log prints "server-side failure with status code 0", meaning that the request failed.

My JSON file URL is correct and the file is present at the given address.

Firebug shows the error:

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

and the Net tag shows status 405 not allowed.

Any ideas on why this is happening?

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

Also, what is adding the parameter _dc=1336714070619 to the end of the GET request?

like image 401
Umesh Patil Avatar asked Dec 13 '22 02:12

Umesh Patil


2 Answers

Just FYI..

For the Who is adding parameter _dc. dc stands for disable cache.
by default, every request in extjs will automatically append the request variable with _dc. more info

If you don't want it, just set disableCaching: false to your request

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

For the why not allowed.
Try opening the JSON URL path without _dc, or maybe there is something wrong with your server.

like image 86
Egy Mohammad Erdin Avatar answered Dec 14 '22 16:12

Egy Mohammad Erdin


if the file you accessing is in the same domain, you can directly give the relative path there.

if the request is cross-domain: If you need to read data from another domain and can't set up a proxy server (some software that runs on your own domain's web server and transparently forwards requests to domainB.com, making it look like they actually came from domainA.com), you can use Ext.data.proxy.JsonP and a technique known as JSON-P (JSON with Padding), which can help you get around the problem so long as the server on domainB.com is set up to support JSON-P responses. See JsonPProxy's introduction docs for more details.

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

like image 22
Rency Avatar answered Dec 14 '22 16:12

Rency