2016-07-06 3 views
0

Momentan arbeite ich an einer App für Active Collab mit ionischen (AngularJS). Wenn ich etwas Zeit verfolgt habe, möchte ich diese Zeit posten, damit ich diese Zeit in Active Collab habe. Aber als ich das versuchte, bekam ich einen 500 Internal Server Error. Dies ist mein Code (ich die Daten aus dem Active Collab API-Dokumentation verwendet wird, testen):Zeitsätze an Active Collab senden

var postData = { 
     "value": 1.5, 
     "user_id": 1, 
     "job_type_id": 1, 
     "record_date": "2014-05-14", 
     "billable_status": 0 
}; 

$http.post(baseUrl+'/projects/' + projectId +'/time-records/', postData, { headers: { 'Content-Type': 'application/json' }}).then(function(res){ ... } 

Die Post-Anforderung Arbeit für das Erhalten der Token (Ausgabe-Token). Also ich habe keine Ahnung was das Problem ist. Ich hoffe, dass mir jemand helfen kann?

Um den Token-Post arbeiten zu lassen, musste ich einige Zeilen zur api.php hinzufügen. Wäre das nicht gut, um dort standardmäßig zu sein?

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { 
    // return only the headers and not the content 
    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) { 
     header('Access-Control-Allow-Headers: X-Requested-With'); 
    } 
    exit; 
} 

Vielen Dank im Voraus!

+0

Ihre Frage enthält nicht genügend Informationen. Zuerst, was ist der Wert von 'baseUrl'? Zweitens, senden Sie Token an den Server? Ohne Token wird Ihre Anfrage abgelehnt. Außerdem haben Sie die Antwortnachricht vom Server nicht hinzugefügt. 500 ist nur der Status, aber Active Collab liefert immer ein bisschen mehr Informationen, damit Sie sehen können, was schief gelaufen ist (es liefert eine Menge Informationen, wenn Sie die App in den Debug-Modus versetzen). – Ilija

+0

Außerdem müssen Sie den Active Collab-Code nicht ändern, damit die API funktioniert. Das Backend der Version 5 ist eine große API und wird von 4 First-Party-Apps sowie vielen Apps von Drittanbietern ohne eine einzige Code-Änderung verwendet. Wenn Sie den Code patchen müssen, gibt es ein Problem im Ansatz. – Ilija

Antwort

0

Ich leite gerade Active Collab lokal. Also baseUrl ist: http://my-ip-address/mypath-to-ac/api/v5/projects/56/time-records/. Ich habe einen AuthInterceptor, also Token sollte angehängt werden. Ich habe auch versucht, es innerhalb der Post-Anfrage zu senden, bekam aber denselben Fehler.

Jetzt debuggte ich es ein wenig mehr und es heißt, dass einige Felder null sind. Aber ich habe diese Felder definitiv ausgefüllt und geschickt.

Dies ist die protokollierten Daten, dass ich mit der Bitte senden werde:

{"value":"1.5","user_id":10,"job_type_id":"0","record_date":1467965415.184,"billable_status":0} 

Und das ist der Fehler, werde ich bekommen: debugged error as screenshot

+0

Basierend auf der Fehlermeldung empfängt Active Collab keine der Daten, die Sie gesendet haben (es ist einfach nicht vorhanden, da Sie einen Validierungsfehler erhalten, der besagt, dass Werte für erforderliche Felder nicht angegeben werden). Stellen Sie sicher, dass Payload, die Sie in Ihrer Nachricht beschrieben haben, tatsächlich als Body der POST-Anfrage gesendet wird (Sie treffen die richtige Methode und URL). – Ilija