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/angular.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/ >>> ajax/libs/angularjs/1.2.0/angular.js:6723:3) >>> at transformResponse (http://ajax.googleapis.com/ >>> ajax/libs/angularjs/1.2.0/angular.js:7387:17) >>> at wrappedCallback (http://ajax.googleapis.com/ >>> ajax/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.angularjs.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/5cE >>>>>>>>>>>>>>>>>>>>> NSfOAhKJDI0iwe6ZV?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 [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.
