webentwicklung-frage-antwort-db.com.de

JSON-Beitrag mit benutzerdefiniertem HTTP-Header-Feld

Ich habe Code geerbt, der eventuell Teil eines API-Aufrufs ist. Basierend auf dem vorhandenen Code ist der Aufruf ein Post, um JSON-Code mit einem access_token abzurufen. Während dies normalerweise einfach und wie bei jeder anderen API draußen ist, erfordert dieser Code, dass ein benutzerdefiniertes httpheader-Feld für das Clientgeheimnis vorhanden ist. 

Ich konnte diese Arbeit in Objective C mit URLRequest usw. durchführen, aber jetzt, da ich den Aufruf für eine Webkomponente erstelle, wurde ich blockiert. 

Ich verwende einen ziemlich Standard-Jquery-Post

        $.post('https://url.com', 
        {access_token:'XXXXXXXXXXXXXXXXXXX',
         function(data){
           console.info(data);
         }, 'json');

Mit einem HTTP-EQUIV im Header. Der Post ruft jedoch niemals Daten ab und der Server selbst erkennt nicht, dass ein Anruf getätigt wurde (auch nicht vollständig).

Möglicherweise muss ich diesen Code ausrangieren und neu beginnen, aber wenn dieses Problem schon einmal aufgetreten ist, geben Sie bitte einen Einblick. 

33
Izzy

Was Sie gepostet haben, hat einen Syntaxfehler, aber es macht keinen Unterschied, da Sie keine HTTP-Header über $.post() übergeben können.

Vorausgesetzt, Sie haben eine jQuery-Version> = 1.5, wechseln Sie zu $.ajax() und übergeben Sie die Option headers ( docs ). (Wenn Sie eine ältere Version von jQuery verwenden, werde ich Ihnen mit der Option beforeSend zeigen, wie es geht.)

$.ajax({
    url: 'https://url.com',
    type: 'post',
    data: {
        access_token: 'XXXXXXXXXXXXXXXXXXX'
    },
    headers: {
        Header_Name_One: 'Header Value One',   //If your header name has spaces or any other char not appropriate
        "Header Name Two": 'Header Value Two'  //for object property name, use quoted notation shown in second
    },
    dataType: 'json',
    success: function (data) {
        console.info(data);
    }
});
110
JAAulde

wenn man .post () verwenden will, dann Dies setzt Header für alle zukünftigen Anfragen, die mit jquery gemacht werden.

$.ajaxSetup({
    headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }
});

dann machen Sie Ihre .post () -Anrufe wie gewohnt.

11
Maulik Gangani

Ich habe es wie Sie versucht haben versucht, aber nur der erste Parameter geht durch und alle erscheinen auf dem Server als undefined. Ich übergebe JSONWebToken als Teil der Kopfzeile.

.ajax({
    url: 'api/outletadd',
    type: 'post',
    data: { outletname:outletname , addressA:addressA , addressB:addressB, city:city , postcode:postcode , state:state , country:country , menuid:menuid },
    headers: {
        authorization: storedJWT
    },
    dataType: 'json',
    success: function (data){
        alert("Outlet Created");
    },
    error: function (data){
        alert("Outlet Creation Failed, please try again.");        
    }

    });
1
user1842926

Ich wollte diesen Thread nur für zukünftige Entwickler aktualisieren. 

JQuery> 1.12 Unterstützt jetzt die Möglichkeit, jeden kleinen Teil der Anforderung über JQuery.post ($ .post ({...})) zu ändern. Siehe zweite Funktionssignatur in https://api.jquery.com/jquery. post/

0
mriera