Weigerte sich zu starten Sie das Skript von '*', weil sein MIME-type ("application/json') ist keine ausführbare Datei, und die strikte MIME-Typ-überprüfung aktiviert ist
Ich bin ein Neuling auf AngularJS. Ich bin mit einer rails-Anwendung verfügbar machen, Daten im json-format. Die Daten von angular-app. Die Winkel-repo-und repo-Schienen sind völlig unterschiedlich. Der Grund für die verschiedenen repositories ist, weil ich möchte, dass meine Schienen repo einfach zu Belichten Daten mithilfe von APIs, die ich benutzen kann in das eckige app.
Meine rails-controller ist als unten
class Api::V1::PhonesController < ApplicationController
def index
render json: Phone.all
end
def show
render json: Phone.find(params[:id])
end
...
end
Nun, wenn ich Besuch 'localhost:3000/api/v1/Handys", es gibt mir die json-Daten für alle Handys. Wenn ich Besuch 'localhost:3000/api/v1/Telefone/1', es gibt die json-Daten für das Telefon mit der id 1. Ich überprüfte die json-Daten-format verwenden http://jsonlint.com/. Funktioniert auch alles Prima bis hier.
Meine angularjs Routen-Datei ist so:
$routeProvider.
when('/phones', {
templateUrl: 'list.html',
controller: 'PhoneListController'
}).
when('/phones/:id', {
templateUrl: 'show.html',
controller: 'PhoneShowController'
}).
otherwise({
redirectTo: '/phones'
});
}]);
Meine index.html in den eckigen repo hat die list.html Vorlage eingebettet.
<html ng-app='phoneCatApp'>
...
</html>
<script type="text/ng-template" id="list.html">
This is the list template.
</script>
den code für die services.js ist wie:
var appServices = angular.module('appServices', []);
phoneCatApp.factory('appServices', ['$http', '$q', function($http, $q){
var url = "http://localhost:3000/api/v1/";
//get all phones
this.getPhones = function(){
var defered = $q.defer();
var listApi = url + "phones";
$http.jsonp(listApi).then(function(results){
defered.resolve(results);
}, function(error){
defered.reject(error);
});
return defered.promise;
}
return this;
}]);
Den text in die Skript-Vorlage angezeigt wird, wenn ich Besuch '#/Handys'. Das problem ist, dass
1) In chrome folgende Fehlermeldung angezeigt, wenn ich überprüfen Sie die Seite.
Refused to execute script from 'http://localhost:3000/api/v1/phones' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.
2) nehmen Sie in firefox die folgende Fehlermeldung wird immer angezeigt.
SyntaxError: missing ; before statement
Danke für die Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hey also ich glaube, dein problem ist, dass Ihre rails-controller ist die Rückgabe von JSON und NICHT JSONP. Ihr controller hat die explizite Angabe einer callback-Funktion, die angegeben werden können, die durch die request-params.
Sehen Umgang mit jsonp in rails 3 controller ein Beispiel für die Rückkehr JSONP aus einer rails-controller
So Ihre rails-code Aussehen würde (argh meine Schienen ist sehr sehr rostig...):
Dann für die kantige Seite, diese Antwort sollte Ihnen zu helfen:
Analyse JSONP $http.jsonp() in response angular.js
Und ich denke, dass Ihr Winkel würde dann so Aussehen: