2016-04-07 7 views
2

Ich versuche, eine Web-API-POST-Methode mit Winkel js rufen Sie Anruf aufrufen. Ich versuche von Postman-Dienstprogramm es auch Anruf erhalten und in Antwort geben Sie ein JSON-Daten.Aber in Winkel-Seite bekomme ich keine Daten als Antwort.Web-API Anruf erhalten, aber in der Antwort sagt undefined

meine Dienste in Winkel js

var _getProjects = function (searchText) { 
    debugger; 
    return $http.post(URL + 'api/project/GetProjectDetails?searchText='+ searchText).then(function (response) { 
     return response; 
    }); 
}; 

und unten ist meine Web-api

[HttpPost] 
    [Route("api/project/GetProjectDetails")] 
    public List<GetKeywordsBasisData_Result> GetProjectDetails(string searchText) 
    { 
     if (!String.IsNullOrEmpty(searchText)) 
     { 
      return projectProvider.GetProjectDetails(searchText).ToList(); 
     } 
     return new List<GetKeywordsBasisData_Result>(); 
    } 
+0

Öffnen Sie inspect Element und klicken Sie auf Netzwerk Registerkarte. Klicken Sie nun auf den Button. Das wird dir sagen, welche URL du anrufst. Kopiere diese URL und vergleiche sie mit deiner Postman-URL. –

+0

Um inspect Element zu öffnen, klicken Sie mit der rechten Maustaste auf den Browser –

+0

Warum rufen Sie zweimal in Ihrem _getProjects $ http.post zurück? –

Antwort

0

Sie einen Rückruf fehlt. Http Calls on $http passieren asynchron, müssen Sie eine Methode übergeben, um anzurufen, sobald der Anruf abgeschlossen ist. Etwas wie das. Der Parameter myCallback ist eine Funktion, die die erwartete Antwort einnimmt, Sie können sie dann (oder was auch immer) innerhalb dieser Funktion verarbeiten.

function (searchText, myCallback) { 
    $http.post(URL + 'api/project/GetProjectDetails?searchText='+ searchText).then(function (response) { 
     myCallback(response); 
    }); 
}; 

Sie dann von Ihrem Controller wie diese Annahme getProjects nennen können, ist Ihre Factory-Methode. Auch vorausgesetzt $ scope ist ein Feld auf Ihrem Controller.

var me = this; 
getProjects('somethingToSearchFor', function(results){ 
    me.$scope.results = results; 
}); 
+1

'.success' ist entzogen. https://docs.angularjs.org/api/ng/service/$http#deprecation-notice. Ich würde argumentieren, dass Sie mit diesem Code lieber nur das Versprechen zurückgeben möchten. 'return $ http.post (URL);' aber es macht die ganze Funktion ziemlich nutzlos. – ippi

+0

@ippi - gut zu wissen, danke! – Igor

+0

in der Konsole zeigt es wie dieses Projekt: 1 XMLHttpRequest kann http: // localhost nicht laden: 53018/api/project/GetProjectDetails? SearchText = ios. Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden. Origin 'http: // localhost: 49938' ist daher nicht erlaubt. –

Verwandte Themen