2017-09-13 6 views
-1

Ich versuche, eine API-Anfrage an unsere API zu senden, aber die $ http.post funktioniert nicht/gibt eine Eigenschaft 'Data' von undefined Fehler kann nicht gelesen werden.

Irgendwelche Vorschläge, wie Sie dies oder Workarounds tun können? oder wie man das Problem richtig debuggt ?.

Code:

var data = { 
    from: "[email protected]", 
    to: "[email protected]", 
    content_type: "text/plain", 
    body: "Temp Message", 
    date: "2017-09-12T03:48:29.285Z", 
}; 

var config = { 
    headers : { 
     'Content-Type' : 'application/x-www-form-urlencoded; charset=utf-8', 
     'Authorization': 'Basic ' + "u/xx/yyy:zzz", 
    } 
} 

return $http.post('https://xxx/send', data, config) 
.success(function (data, status, header, config) { 
    console.log("SUCCESS"); 
}) 
.error(function (data, status, header, config) { 
    console.log("FAILED"); 
}); 

Angular/Ionic Fehler

0  330020 error TypeError: Cannot read property 'data' of undefined 
    at http://xxx.xxx.x.xxx:8101/lib/ionic/js/ionic.bundle.js:24536:24 
    at processQueue (http://xxx.xxx.x.xxx:8101/lib/ionic/js/ionic.bundle.js:29132:28) 
    at http://xxx.xxx.x.xxx:8101/lib/ionic/js/ionic.bundle.js:29148:27 
    at Scope.$eval (http://xxx.xxx.x.xxx:8101/lib/ionic/js/ionic.bundle.js:30400:28) 
    at Scope.$digest (http://xxx.xxx.x.xxx:8101/lib/ionic/js/ionic.bundle.js:30216:31) 
    at Scope.$apply (http://xxx.xxx.x.xxx:8101/lib/ionic/js/ionic.bundle.js:30508:24) 
    at done (http://xxx.xxx.x.xxx:8101/lib/ionic/js/ionic.bundle.js:24829:47) 
    at completeRequest (http://xxx.xxx.x.xxx:8101/lib/ionic/js/ionic.bundle.js:25027:7) 
    at XMLHttpRequest.requestError (http://xxx.xxx.x.xxx:8101/lib/ionic/js/ionic.bundle.js:24978:9) 
+1

es scheint, Sie versuchen, "Data" -Eigenschaft von einem Objekt, das nicht definiert ist, aber dieser Code nicht hier in Ihrer Frage zur Verfügung gestellt. – Gaurav

Antwort

1

Die Content-Type Ihrer HTTP-POST-Anfrage application/x-www-form-urlencoded ist. Daher sollte die data als Parameterformat serialisiert werden, zum Beispiel unter Verwendung von $.param().

für Ihren Code, würde es wie folgt aussehen:

... 
data = $.param(data); // using jQuery to serialze JSON as parameters. 
return $http.post('https://xxx/send', data, config) 
    .success(function (data, status, header, config) { 
     console.log("SUCCESS"); 
    }) 
    .error(function (data, status, header, config) { 
     console.log("FAILED"); 
    }); 

Oder, wenn der Server tatsächlich JSON-Format akzeptieren, sollte die Content-Type zu application/json geändert werden. Der Code würde wie aussehen: