web-dev-qa-db-ja.com

カスタムHTTPヘッダーフィールドを使用したJSON投稿

最終的にAPI呼び出しの一部となるコードをいくつか継承しました。既存のコードに基づいて、呼び出しはaccess_tokenでJSONコードを取得するための投稿です。これは通常簡単であり、他のすべてのAPIと同じですが、このコードでは、クライアントシークレット用にカスタマイズされたhttpheaderフィールドが必要です。

ObjectiveRequestでURLRequestなどを使用してこの作業を行うことができましたが、今ではWebコンポーネントの呼び出しを作成しているため、ロードブロッキングになりました。

私はかなり標準的なjqueryポストを使用しています

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

ヘッダーにHTTP-EQUIVが含まれています。しかし、投稿は決してデータを取得せず、サーバー自体は呼び出しが行われたことを認識しません(不完全な呼び出しでも)。

このコードを破棄して最初からやり直さなければならない場合がありますが、以前にこの問題に遭遇したことがある人は、洞察を提供してください。

38
Izzy

投稿したものには構文エラーがありますが、$.post()を介してHTTPヘッダーを渡すことができないため、違いはありません。

JQueryバージョン> = 1.5を使用している場合、$.ajax()に切り替えてheadersdocs )オプションを渡します。 (jQueryの古いバージョンを使用している場合は、beforeSendオプションを使用してそれを行う方法を示します。)

$.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);
    }
});
120
JAAulde

。post()を使用したい場合 then これにより、jqueryで行われる今後のすべてのリクエストにヘッダーが設定されます

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

その後、通常どおり.post()を呼び出します。

15
Maulik Gangani

あなたが言ったように試しましたが、最初のパラメータのみが通過し、残りはすべてundefinedとしてサーバーに表示されます。 JSONWebTokenをヘッダーの一部として渡します。

.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.");        
    }

    });
2
Sumit Singh

将来の開発者向けにこのスレッドを更新したかっただけです。

JQuery> 1.12は、JQuery.post($ .post({...})を介してリクエストの小さな部分をすべて変更できるようになりました。 https://api.jquery.com/の2番目の関数シグネチャを参照してください。 jquery.post/

0
mriera