PDA

View Full Version : Restful DELETE IE



j.joslet
17 May 2010, 1:40 AM
Hello, I have some problem with a restful store and Internet explorer. I can add, update and read but I can't delete using Internet Explorer. It works fine with other browsers (I've tested with Chrome and Firefox).

The error message is:

User agent : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; MDDR; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
Date : Mon, 17 May 2010 09:38:03 UTC

Message : Invalid argument.
Line: 1748
Char: 13
Code : 0
URI : http://localhost:8080/presences-web/static/extjs/ext-3.2.1/adapter/ext/ext-base-debug.js
So I've check example from ExtJS package. On ExtJS site, the example "restful store with a row editor" (http://www.extjs.com/deploy/dev/examples/restful/restful.html) works but not in a local version (using EasyPHP). I can read, add and update but I can't delete.

What can I do for that ?

j.joslet
19 May 2010, 12:25 AM
No one ?

sdavids
29 Jul 2010, 7:26 AM
I am having the same issue. The request isn't making it to the server. The requestexception event is being fired from Ext.Ajax with a response code of 0 (the method of delete and the URL is correct). Like the original poster create, read, and update are all fine. Any help would be greatly appreciated.

sdavids
29 Jul 2010, 9:13 AM
A little more info:

The error is occurring in the asyncRequest method in ext-base - specifically when o.conn.send(postData || null); is called. I receive an Invalid argument error after the line executes.

sdavids
30 Jul 2010, 9:34 AM
bump

geographika
26 Jan 2011, 1:23 AM
I am having the exact same problem. It seems to be caused by passing in any postData (in my case the ID is sent) to the following call:

o.conn.send(postData || null);

If I set the postData variable to null in my debugger the request triggers successfully and deletes the record.

DELETE HTTP requests should not send parameters (at least with my webservices), and IE does not seem to like them either. I am trying to find a way to stop the ID being passed while using the proxy API.

geographika
26 Jan 2011, 3:44 AM
Ok I found out my error. On my JsonWriter I was setting the data myself. I needed to add the destroyRecord and could then set the data to return to null.

writer: new Ext.data.JsonWriter({
listful: true,
encode: false,
writeAllFields: true,
render: function(params, baseParams, data){
params.jsonData = data;
},
destroyRecord: function(rec){
return null;
}
}),

sdavids
26 Jan 2011, 7:17 AM
When you override the destroyRecord function, you are removing the ability for the store to manage the delete queue. I tracked down the problem that was occurring for me which stemmed from using the ext-basex user extension. If you are using ext-basex try overriding the forceActiveX boolean by adding this to your overrides: Ext.lib.Ajax.forceActiveX = true;

Hope that helps.

geographika
2 Feb 2011, 11:00 AM
Thanks for the update. I don't think I'm removing anything by overriding the destroyRecord function in the JsonWriter. The original function does not seem to do anything other than pass data back. I'm not using ext-basex (as far as I am aware - unless it is by default).



destroyRecord : function(rec){
if(this.encodeDelete){
var data = {};
data[this.meta.idProperty] = rec.id;
return data;
}else{
return rec.id;
}
}