2011-08-17 12 views
28

APIコールの一部になるコードを継承しました。既存のコードに基づいて、この呼び出しはaccess_tokenを使用してJSONコードを取得するためのポストです。これは通常は単純で、他のすべてのAPIと同様ですが、このコードでは、クライアントの秘密情報用にカスタマイズされたhttpheaderフィールドが必要です。カスタマイズされたHTTPヘッダーフィールドを使用したJSON投稿

私はURLRequestなどでObjective Cでこの作業を行うことができましたが、Webコンポーネントの呼び出しを作成するようになりましたので、私はロードブロッキングされました。

私は、ヘッダー内のHTTP-EQUIVではかなり標準のjQueryポスト

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

を使用しています。しかし、ポストは決してデータを取得せず、サーバー自体は呼び出しが行われたことを認識しません(不完全な呼び出しであっても)。

このコードをスクラップしてやり直す必要があるかもしれませんが、以前にこの問題に遭遇したことがある場合は、洞察力を提供してください。

答えて

95

投稿した内容には構文エラーがありますが、$.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); 
    } 
}); 
+0

ありがとうございました!あなたは私に数時間の不満を救った。今、オブジェクトはSafariで取得されていますが、FirefoxやChromeでは取得されていません。これは既知の関連問題ですか?もしそうなら、私はあなたの洞察力が大好きです。もしそうでなければ、私はそれを理解するでしょう。 – Izzy

+0

ChromeとFirefoxを使用しているときに、デベロッパーツールやFirebug経由でサーバーに送信された内容は何ですか?返される内容は何ですか?要求が到着して適切であるかどうかを確認するために、サーバーでどのようなデバッグを行っていますか? – JAAulde

+0

Firebugにエラーは一切表示されませんが、返品はありません。 Firefox Web Consoleでは、「OPTIONS https:// [url.com] [HTTP/1.1 200 OK 441ms]」と表示され、Chrome Developerツールでは次のように表示されます。XMLHttpRequestは「https://url.com」をロードできません。 Originのnullは、Access-Control-Allow-Originによって許可されていません。サーバーは要求が入ったことを示します。要求が不適切であれば、エラー・メッセージが記録されます。 – Izzy

0

をあなたが述べたように私がしようとしたが、最初のパラメータだけが通過して、すべてがある休息さサーバーには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.");   
    } 

    }); 
5

1は、()

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

は、あなたの.postを作るjQueryを使って作られた将来のすべての要求のためのヘッダーを設定します()その後、この.post使用したいなど、通常の呼び出した場合。

関連する問題