Nice find, Chuck, Thanks!

Quick fix for me would be to manually change the angular.js code so that 
status 0 is 0 again. I understand that could potentially break experience 
for some android users, so not a great option. Also I have to manually 
change this every time I upgrade to the latest 1.2.x version of angular - 
that's a killer.

Would someone be able to offer some insight the this particular code 
change? 

Is it correct to change response code 0 to 404 because of the stock browser 
on Android 4.1 as per the latest angular implementation? If so, how are we 
supposed detect network/communication errors?

Thanks,
Geir


On Wednesday, January 29, 2014 6:13:50 PM UTC-3, Chuck Fillet wrote:

> found problem in angular. js :  Code snippet below extracted from 
> angular.js.  They do change  a 0 to a 404 !  
>
>      function completeRequest(callback, status, response, headersString) {
>                 // cancel timeout and subsequent timeout promise resolution
>                 timeoutId && $browserDefer.cancel(timeoutId);
>                 jsonpDone = xhr = null;
>
>                 // fix status code when it is 0 (0 status is undocumented).
>                 // Occurs when accessing file resources.
>                 // On Android 4.1 stock browser it occurs while retrieving 
> files from application cache.
>                 status = (status === 0) ? (response ? 200 : 404) : status;
>
>                 // normalize IE bug (http://bugs.jquery.com/ticket/1450)
>                 status = status == 1223 ? 204 : status;
>
>                 callback(status, response, headersString);
>                 $browser.$$completeOutstandingRequest(noop);
>             }
>
> Chuck 
>
> On Wednesday, January 29, 2014 2:54:43 PM UTC-6, Chuck Fillet wrote:
>>
>> I am also experiencing this problem. My angular verison is 1.2.9. I have 
>> put my client in airplane mode and it returns a 404 as a result of a rest 
>> call using $http.  
>>
>> Chuck
>>
>> On Wednesday, January 29, 2014 7:00:42 AM UTC-6, Geir Gullestad Pettersen 
>> wrote:
>>>
>>> I'm using AngularJS for a singlepage app with a REST backend. It should 
>>> handle networking issues gracefully so I had the following code running on 
>>> 1.2.2:
>>>
>>> $http(...).success(function (data, status, headers, config) {
>>>
>>>                    // do success stuff
>>>
>>>                 })
>>>                 .error(function (data, status, headers, config) {
>>>
>>>                     if (status == 0) {
>>>                         // handle lower level communication issue, e.g. 
>>> ask user to check network setup, etc and try again
>>>                     }
>>>                     else {
>>>                           // handle 40x errors (user was not authorized, 
>>> referenced a resources that doesn't exist, etc) 
>>>                     }
>>>                 });
>>>
>>>
>>> When i was on 1.2.2 the status was 0 whenever the server was down. i 
>>> could then display a message to the user that he had networking issues 
>>> (possibly disconnected wlan, mobile data, etc). 
>>>
>>> However, after upgrading to 1.2.10 i get status 404 when there are 
>>> communication issues, instead of 0 as before. 
>>>
>>> Is this intentional or a bug? If it is intentional it makes it a lot 
>>> harder for to distinguish between network layer errors and application 
>>> errors since 404 is also used by the REST interface to report resources 
>>> that doesnt exist.
>>>
>>> Any thoughts?
>>>
>>> Thanks!
>>>
>>>
>>> /Geir
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to