The point is, the call will fail if you fetch a file that isn't valid JSON.
So replace the file with something that's valid and then see if that works.


On Fri, Sep 5, 2014 at 1:21 PM, mark goldin <[email protected]> wrote:

> Not sure if it's a valid json, but at this point I dont really care. All I
> want is a working code.
>
> On Friday, September 5, 2014 3:07:45 PM UTC-5, Eric Eslinger wrote:
>>
>> I'd take the actual file and shove it through a json linter if I were
>> you, or look more closely at the object actually getting returned by the
>> XHR request (you can see the response in devtools).
>>
>>
>> On Fri, Sep 5, 2014 at 1:03 PM, mark goldin <[email protected]> wrote:
>>
>>> BAsically, it's something like this:
>>> { "name": "Hartsfield Jackson Atlanta International Airport", "code":
>>> "ATL", "city": "Atlanta", "state": "GA", "lat": 33.64, "lon": -84.444,
>>> "pop2011": 432427, "vol2011": 44414121, "vol2010": 43130585, "vol2009":
>>> 42280868, "vol2008": 43236665, "vol2007": 43236665, "vol2006": 41352038,
>>> "vol2005": 42402653 }
>>>
>>> On Friday, September 5, 2014 3:01:33 PM UTC-5, Thomas Murphy wrote:
>>>>
>>>> Show us the contents of the data file please. Looks like a JSON parse
>>>> error.
>>>>
>>>>
>>>> On Fri, Sep 5, 2014 at 3:54 PM, mark goldin <[email protected]> wrote:
>>>>
>>>>> Controller:
>>>>> $http.get(url).then(function (data) { console.log('1234');
>>>>> }).catch(function (err) { console.log('5678') });
>>>>>
>>>>> Tools Console:
>>>>> SyntaxError: Unexpected token ,
>>>>>     at Object.parse (native)
>>>>>     at fromJson (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/
>>>>> angular.js:1033:14)
>>>>>     at $HttpProvider.defaults.defaults.transformResponse (
>>>>> http://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angula
>>>>> r.js:6749:18)
>>>>>     at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular
>>>>> .js:6724:12
>>>>>     at Array.forEach (native)
>>>>>     at forEach (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/
>>>>> angular.js:300:11)
>>>>>     at transformData (http://ajax.googleapis.com/aj
>>>>> ax/libs/angularjs/1.2.0/angular.js:6723:3)
>>>>>     at transformResponse (http://ajax.googleapis.com/aj
>>>>> ax/libs/angularjs/1.2.0/angular.js:7387:17)
>>>>>     at wrappedCallback (http://ajax.googleapis.com/aj
>>>>> ax/libs/angularjs/1.2.0/angular.js:10549:81)
>>>>>     at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular
>>>>> .js:10635:26 angular.js:9037
>>>>> 5678
>>>>>
>>>>> On Friday, September 5, 2014 2:41:32 PM UTC-5, Eric Eslinger wrote:
>>>>>>
>>>>>> In your controller, just call 
>>>>>> $http.get(url).then(function(data){$scope.myData
>>>>>> = data.data}).catch(function(err){console.log(err)});
>>>>>>
>>>>>> In simple cases, I prefer just calling $http.get directly. In more
>>>>>> complicated cases, it makes sense to put that behind an abstraction layer
>>>>>> (if you're cache-ing calls, or you do a lot of hits on the same URL and
>>>>>> want to use singletons to keep control of which url gets hit, etc etc). 
>>>>>> But
>>>>>> that's just IMO. The important point (that a lot of people seem to miss 
>>>>>> in
>>>>>> the documentation) is that the .success and .error callbacks on $http are
>>>>>> not needed - the return values from $http calls are all promises which
>>>>>> conform to the standard spec, so you can just .then chain from there.
>>>>>>
>>>>>> e
>>>>>>
>>>>>>
>>>>>> On Fri, Sep 5, 2014 at 12:23 PM, mark goldin <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> <return $http.get().then(function(data){return
>>>>>>> massageData(data)}).catch(function(err){at least you have some
>>>>>>> error handling})
>>>>>>> How do I consume that in my Controller if there is no function
>>>>>>> (getData()) anymore?
>>>>>>>
>>>>>>>
>>>>>>> On Friday, September 5, 2014 2:14:22 PM UTC-5, mark goldin wrote:
>>>>>>>>
>>>>>>>> Jumped to conclusion too quickly. The file is in black now, but the
>>>>>>>> error is still there.
>>>>>>>>
>>>>>>>> On Friday, September 5, 2014 2:06:34 PM UTC-5, mark goldin wrote:
>>>>>>>>>
>>>>>>>>> That was it! Added it to my web.config and no more errors.
>>>>>>>>> Thanks for the help.
>>>>>>>>>
>>>>>>>>> On Friday, September 5, 2014 1:54:39 PM UTC-5, Thomas Murphy wrote:
>>>>>>>>>>
>>>>>>>>>> I'd be willing to put a bit of money on it throwing a CORS if
>>>>>>>>>> you're not running your angular app against a server.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Fri, Sep 5, 2014 at 2:50 PM, Eric Eslinger <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> If the chrome dev tools are showing a red status, then the error
>>>>>>>>>>> isn't in your promise handling, it's in the actual fetching of the 
>>>>>>>>>>> file -
>>>>>>>>>>> that file isn't being properly served by your backend, or isn't 
>>>>>>>>>>> being
>>>>>>>>>>> served the way you think it is (you may need to set cookies or a 
>>>>>>>>>>> token to
>>>>>>>>>>> access it, etc - it depends on your server setup).
>>>>>>>>>>>
>>>>>>>>>>> e
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Sep 5, 2014 at 11:48 AM, mark goldin <[email protected]
>>>>>>>>>>> > wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Tools will show the same info even if I try to access non
>>>>>>>>>>>> existent file.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Friday, September 5, 2014 1:43:35 PM UTC-5, mark goldin
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> The url is correct, I am not fully showing it.
>>>>>>>>>>>>> In the Tools the file is in Red.Status text Canceled. Can't
>>>>>>>>>>>>> see any more info about failure.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Friday, September 5, 2014 1:34:28 PM UTC-5, Eric Eslinger
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> You can just treat $http.get() as a promise. You don't have
>>>>>>>>>>>>>> to directly instantiate a second promise unless you're doing 
>>>>>>>>>>>>>> something
>>>>>>>>>>>>>> funky.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> return $http.get().then(function(data){return
>>>>>>>>>>>>>> massageData(data)}).catch(function(err){at least you have
>>>>>>>>>>>>>> some error handling})
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Also, if you're getting an error, what's the failed? At the
>>>>>>>>>>>>>> very least, I'm 99.9% sure that http://localhost:/localfile.txt
>>>>>>>>>>>>>> is an incorrect url. Don't you have to put a port after a : in a 
>>>>>>>>>>>>>> host
>>>>>>>>>>>>>> definition? so either localhost/localfile or 
>>>>>>>>>>>>>> localhost:3000/localfile. So
>>>>>>>>>>>>>> it could be that your $http.get is just failing. You can get more
>>>>>>>>>>>>>> information on this in the chrome debug tools - look at your 
>>>>>>>>>>>>>> network
>>>>>>>>>>>>>> requests, and it should show the localfile.txt XHR, and either 
>>>>>>>>>>>>>> be black
>>>>>>>>>>>>>> (success!) or red (fails!) and have more information there.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> e
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Fri, Sep 5, 2014 at 10:54 AM, mark goldin <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Actually I am rather getting alert that says Error.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Friday, September 5, 2014 12:52:33 PM UTC-5, mark goldin
>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Ok, I have changed my code. Here it is:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Service
>>>>>>>>>>>>>>>> angular.module('myModule').factory("service", function
>>>>>>>>>>>>>>>> ($http, $q) {
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>     var requestUri = 'http://localhost:/localfile.txt';
>>>>>>>>>>>>>>>>     return {
>>>>>>>>>>>>>>>>         getData : function(){
>>>>>>>>>>>>>>>>             var deferred = $q.defer();
>>>>>>>>>>>>>>>>             var response = $http.get(requestUri);
>>>>>>>>>>>>>>>>             response.success(function (data) {
>>>>>>>>>>>>>>>>                 deferred.resolve(data);
>>>>>>>>>>>>>>>>             });
>>>>>>>>>>>>>>>>             response.error(function (data) {
>>>>>>>>>>>>>>>>                 alert('Error');
>>>>>>>>>>>>>>>>             });
>>>>>>>>>>>>>>>>             // Return the promise to the controller
>>>>>>>>>>>>>>>>             return deferred.promise;
>>>>>>>>>>>>>>>>         }
>>>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>>> });
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Controller:
>>>>>>>>>>>>>>>> var promise = service.getData();
>>>>>>>>>>>>>>>>     $scope.data = promise.then(function (data) {
>>>>>>>>>>>>>>>>         alert('Success: ' + data);
>>>>>>>>>>>>>>>>     }, function (reason) {
>>>>>>>>>>>>>>>>         alert('Failed: ' + reason);
>>>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>>>     );
>>>>>>>>>>>>>>>> When I run it I get the alert that says Failed ...
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> BTW, if I change my service to this:
>>>>>>>>>>>>>>>> getData : function(){
>>>>>>>>>>>>>>>>             var deferred = $q.defer();
>>>>>>>>>>>>>>>>             deferred.resolve('1234');
>>>>>>>>>>>>>>>>             return deferred.promise;
>>>>>>>>>>>>>>>>         }
>>>>>>>>>>>>>>>> Then I get Success
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Friday, September 5, 2014 11:32:42 AM UTC-5, Thomas
>>>>>>>>>>>>>>>> Murphy wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Great, so let's focus on what's happening in the
>>>>>>>>>>>>>>>>> controller. As Sander said, you're returning a promise from 
>>>>>>>>>>>>>>>>> you service. *That
>>>>>>>>>>>>>>>>> promise needs to be resolved. *Check out the
>>>>>>>>>>>>>>>>> documentation here on the syntax, and see if it doesn't 
>>>>>>>>>>>>>>>>> provide you the
>>>>>>>>>>>>>>>>> data you're expecting. https://docs.angula
>>>>>>>>>>>>>>>>> rjs.org/api/ng/service/$q
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Feel free to paste in a bit more of your controller code
>>>>>>>>>>>>>>>>> too.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Fri, Sep 5, 2014 at 12:28 PM, mark goldin <
>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> 1. serviceName.getData();
>>>>>>>>>>>>>>>>>> 2. The url points to a text file on the local web server.
>>>>>>>>>>>>>>>>>> Navigating from Browser to the file opens it with no problem.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Friday, September 5, 2014 9:58:27 AM UTC-5, Thomas
>>>>>>>>>>>>>>>>>> Murphy wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> 1. What are you doing in the controller once you call
>>>>>>>>>>>>>>>>>>> serviceName.getData()?
>>>>>>>>>>>>>>>>>>> 2. What url are you calling in $http.get? If you're not
>>>>>>>>>>>>>>>>>>> calling anything, you'll get no data.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Best,
>>>>>>>>>>>>>>>>>>> Thomas
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On Fri, Sep 5, 2014 at 10:49 AM, mark goldin <
>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> I also found this code:
>>>>>>>>>>>>>>>>>>>>  function ($http, $q) {
>>>>>>>>>>>>>>>>>>>>   return {
>>>>>>>>>>>>>>>>>>>>         getData : function(){
>>>>>>>>>>>>>>>>>>>>             var deferred = $q.defer();
>>>>>>>>>>>>>>>>>>>>             var promise = $http.get(url).success(
>>>>>>>>>>>>>>>>>>>> function (response) {
>>>>>>>>>>>>>>>>>>>>                 deferred.resolve(response);
>>>>>>>>>>>>>>>>>>>>             });
>>>>>>>>>>>>>>>>>>>>             // Return the promise to the controller
>>>>>>>>>>>>>>>>>>>>             return deferred.promise;
>>>>>>>>>>>>>>>>>>>>         }
>>>>>>>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> and in controller to get data: serviceName.getData();
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> but I get no data. Can you please explain why is not
>>>>>>>>>>>>>>>>>>>> working?
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> On Friday, September 5, 2014 9:39:49 AM UTC-5, mark
>>>>>>>>>>>>>>>>>>>> goldin wrote:
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Ok, I see how it works.
>>>>>>>>>>>>>>>>>>>>> Another question. Is it possible to have just one
>>>>>>>>>>>>>>>>>>>>> function *MyTestService *and run it like this?
>>>>>>>>>>>>>>>>>>>>> <div ng-controller='*MyTestService *as vm'>
>>>>>>>>>>>>>>>>>>>>>        <p>the result from the service load:</p>
>>>>>>>>>>>>>>>>>>>>>        <pre>{{vm.data|json}}</pre>
>>>>>>>>>>>>>>>>>>>>>     </div>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> On Friday, September 5, 2014 9:28:42 AM UTC-5, mark
>>>>>>>>>>>>>>>>>>>>> goldin wrote:
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> What vm.data shown in index.html would come from if I
>>>>>>>>>>>>>>>>>>>>>> remove the TestMyService function?
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> On Friday, September 5, 2014 1:32:11 AM UTC-5, Sander
>>>>>>>>>>>>>>>>>>>>>> Elias wrote:
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> Hi Mark,
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> You mean something like this: http://plnkr.co/edit/
>>>>>>>>>>>>>>>>>>>>>>> 5cENSfOAhKJDI0iwe6ZV?p=preview
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>>>>>>>>>>> Sander
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>  --
>>>>>>>>>>>>>>>>>>>> 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 angular+u...@
>>>>>>>>>>>>>>>>>>>> googlegroups.com.
>>>>>>>>>>>>>>>>>>>> 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/d/op
>>>>>>>>>>>>>>>>>>>> tout.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>  --
>>>>>>>>>>>>>>>>>> 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/d/op
>>>>>>>>>>>>>>>>>> tout.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>  --
>>>>>>>>>>>>>>> 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/d/optout.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>  --
>>>>>>>>>>>> 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/d/optout.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>  --
>>>>>>>>>>> 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/d/optout.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>  --
>>>>>>> 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/d/optout.
>>>>>>>
>>>>>>
>>>>>>  --
>>>>> 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/d/optout.
>>>>>
>>>>
>>>>  --
>>> 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/d/optout.
>>>
>>
>>  --
> 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/d/optout.
>

-- 
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/d/optout.

Reply via email to