別サーバーへのPOST送信。いわゆるCORS。
テンプレートとか乗ってて親切。
$.ajax({ url:'https://', type:'POST', data: event.record, // contentType: 'application/json; charset=UTF-8', dataType:'text', // xhrFields: {//CORSでクッキーを送信する場合 // withCredentials: true // }, cache:false, async:false//これがないとCancelされる }) .done( function (data){ console.log(data); }) .fail( function (jqXHR, textStatus, errorThrown){ console.log(jqXHR); console.log(textStatus); console.log(errorThrown); }) .always( function(data){ });
- 今回CORSなので、httpsが必須
- CORSでクッキーを送信する場合はwithCredentials:trueに
- async:falseにしないと、レスポンス前にkintoneが遷移してしまい、キャンセルされる模様。
JSONがなぜか通らないのは、何か見落としているのかも。
kintone.proxy を使えば同期処理の問題はおこらないのかな?
Ajaxのエラーに関する参考URL
Ajaxのエラーについては、いくつか種類があるので、それぞれ参考になったサイトなど。
Provisional Headers are shown. について
「Provisional Headers are shown.」が表示される場合、何らかの理由でキャッシュが表示されている、というのが一般的。今回の場合は、非同期処理になっていたので、レスポンスを待たず遷移してしまっていた。この場合もProvisional headers are shownになる。
Asyncの問題以外では、サーバー側とブラウザ側のキャッシュを削除するという対応が多いみたい。
→ Ajax - ajax時に出るエラーの原因と解決策について(provisional headers are shown)|teratail
→ 【Chrome DevTools】「Provisional headers are shown」が表示される原因と対策
関連して、ECCUBE3のキャッシュ制御についても調べたのでついでに。
→ EC-CUBE3 twig(テンプレートのキャッシュ制御) - Qiita
クロスドメイン(CORS)について。
クロスドメインでAjaxを投げる際に注意すべき点がいくつか。