2016-05-05 11 views
0

Ich versuche, Rest Web-Service-Anfrage mit JSON zu senden. Aber es wirft Ungültige Anfrage (http 400) Fehler. Die Anwendung benötigt keine Anmeldung. Ich habe verschiedene Formate ausprobiert, aber nichts half. Das Hauptproblem ist, dass JSON-Variablen dynamisch sind, d. H. Vom Benutzer eingegebene Werte.JSON mit Variablen in Javascript

var jsonObject = []; 
var first_name = document.getElementById("firstName").value; 
var last_name = document.getElementById("lastName").value; 
var u_password = document.getElementById("password").value; 
var u_password_hint = document.getElementById("passwordHint").value; 
var email = document.getElementById("email").value; 
var u_phone = document.getElementById("phone").value; 
var u_organization = document.getElementById("organization").value; 

var user = new User(first_name,last_name,email,u_password,u_password_hint,u_organization); 
jsonObject.push(user); 

var client = new XMLHttpRequest(); 
client.open("POST","https://instance.service-now.com/api/now/v1/table/user_registration_request"); 
client.setRequestHeader('Accept','application/json'); 
client.setRequestHeader('Content-Type','application/json'); 
client.send(body); 
window.location = 'activate account.do'; 

function User(first_name, last_name, email, u_password_hint, u_password, u_organization) { 
    this.first_name = first_name; 
    this.last_name = last_name; 
    this.email = email; 
    this.u_password = u_password; 
    this.u_password_hint = u_password_hint; 
    this.u_organization = u_organization; 
} 

Antwort

0

Nach viel Mühe zu verwenden, zu finden ist es passieren kann ich die Lösung Das Original-JSON-Format funktioniert mit kleinen Änderungen.

var xhr = new XMLHttpRequest(); 
xhr.withCredentials = true; 
xhr.addEventListener("readystatechange", function() { 
if (this.readyState === 4) { 
console.log(this.responseText); 
} 
}); 
xhr.open("POST","https://instance.service-now.com/api/now/table/ecc_queue"); 

var data='{"agent":"AttachmentCreator","topic":"AttachmentCreator","name":"'+fileName+'","source":"u_itinerary_attchements:"'+sysid+'","payload":"'+encodedFile+'"}'; 

xhr.setRequestHeader("authorization", "Basic anBhdmFuOmpwYXZhbg=="); 
xhr.setRequestHeader("Content-Type", "application/json");  
xhr.setRequestHeader("Accept", "application/json"); 
xhr.setRequestHeader("cache-control", "no-cache"); 

xhr.send(data); 
      }; 

Hinweis: Seien Sie vorsichtig mit einfachen und doppelten Anführungszeichen. Ich habe es mit diesen Dingen vermasselt und viel Zeit in Anspruch genommen, um das Problem zu beheben.

1

Ich würde empfehlen, Ihre API mit der ServiceNow des REST API explorer zu testen.

Ihr Code wurde nicht getestet, aber Ihre Benutzerfunktion sollte ein "Benutzer" -Objekt zurückgeben.

function User(first_name, last_name, email, u_password_hint, u_password, 
    u_organization) { 
    return { 
    'first_name': first_name, 
    'last_name': last_name, 
    'email': email, 
    'u_password': u_password, 
    'u_password_hint': u_password_hint, 
    'u_organization': u_organization, 
    }; 
} 

, die Sie als JSON

client.send(JSON.stringify(user)); 

keine Notwendigkeit, "neue" var user = neue Benutzer (