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