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.
