Javascriptで変数hogeにテキストが入っているとします。
そのテキストを外部URL(http://example.com/)にPOST送信するには、どういうコードを書けば良いでしょうか。
フォームを使わずにリンクをクリックするだけでやりたいのですが可能でしょうか。
ご教授よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
ベストアンサー
ポストするだけなら、例えば jQuery を使って次のようにできます。
javascrupt
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<title></title> 6</head> 7<body> 8<a href="#" id="post">post</a> 9<script src="//code.jquery.com/jquery-1.11.3.js"></script> 10<script> 11$(function(){ 12 $('#post').on('click', function(){ 13 var hoge = "this is text"; 14 $.ajax({ 15 url: 'http://example.com/', 16 method: 'post', 17 data: hoge 18 }) 19 }) 20}) 21</script> 22</body> 23</html>
jQuery の $.ajax()
はクロスオリジンかどうかを自動的に判断して、クロスオリジンならカスタムヘッダ X-Requested-With
を付けないという特徴があるので(というか、同一オリジンの場合に jQuery はわざわざカスタムヘッダを付けているのですが)、自分で余計なカスタムヘッダをつけたりコンテントタイプを弄ったりしなければ CORS のプリフライトリクエストが飛ぶことはありません。
ただし、この方法でポストすることはできますが、JavaScript からレスポンスにアクセスできません(サーバが Access-Control-Allow-Origin のようなレスポンスヘッダを返すなら別です)。
投稿2015/07/29 04:39
編集2015/07/29 05:23総合スコア4516
0
こんにちは
値の受け渡しをするには、formは必須だと思います。
隠し項目を設けてそこに変数の値をセットし、サブミットしてはいかがでしょうか?
JavaScript
1 var hoge="テキスト"; 2 function submit(){ 3 document.sampleForm.hoge.value=hoge; 4 document.sampleForm.submit(); 5 } 6
HTML
1<a href="javascript:submit();">リンク</a> 2<form name="sampleForm" action="外部URL(例:http://example.com/)" method="post"> 3<input type="hidden" name="hoge" value=""> 4</form>
POSTでなくGETでもいいのであれば、URLをJavaScriptで組み立ててはいかがでしょうか?
以上。よろしくお願いいたします。
投稿2015/07/29 04:34
編集2015/07/29 04:36総合スコア22
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
「javascript クロスドメイン POST」で検索するといくつか見つかります。
例)
http://www.otchy.net/20090923/send-post-method-to-cross-domain-only-use-javascript/
投稿2015/07/29 04:33
総合スコア1151
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/29 13:43
2015/07/29 15:19