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] > <javascript:>> 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/ >>>>>>>>>>>>>>>>>>>>>> 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 [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] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> 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.
