2016-11-19 4 views
-2

私は必要なときにフォームにデータを追加できるメソッドを書いています(非表示入力には興味がありません)。しかし、これは私のページがリフレッシュ/リダイレクトされないAjax呼び出しのように機能します。XmlHttpRequestを非同期の方法で使用する

function FormSubmission(formId) { 
    var i = $("#" + formId).serialize(); 
    // I add thing to 'i' here 
    var url = $("#" + formId).attr("action"); 
    var req = new XMLHttpRequest(); 
    req.onreadystatechange = function() { 

    } 
    req.open("POST", url, false); 
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    req.send(i); 
} 

これは、誰かが非アヤックスの方法でフォームを投稿したときと同じように動作したいときです。 XmlHttpRequestでこれを可能にする組み込みの機能はありますか?何もない場合は、サーバーから返された結果にリダイレクトするためにどのようにイベントを使用できますか?(URL +データの取得方法)

+3

*非アヤックス的な方法でフォームを作成してください。 "*なぜフォーム提出を使用しないのですか?あなたは*「私は隠された入力に興味がありません」と言ってきましたが、どうしてですか?あなたがしたいと言ったことを彼らがしっかりしているとき? –

+0

@ T.J.Crowder:世界のすべてのシナリオと開発アプローチを想像できると思いますか?いいえ、誰もしません、私はあなたと分かち合うことができないようにそれが欲しい理由があります。 – Arrrr

+0

なぜ人々は何の意味もない何かをしたいときはいつも、その理由は秘密ですか? – Quentin

答えて

-2

私はあなたの問題を得た場合、私は知りませんが、あなたはこのようにjQueryのAJAX呼び出しを使用することができます。

function FormSubmission(formId) { 
    $.ajax({ 
     type: "POST", 
     data: $("#" + formId).serialize(), 
     url: $("#" + formId).attr("action"), 
     success: function(data) { 
      // in case of success you redirect the client 
      window.location = data.the_url; 
     }, 
     error: function() { 
      // show error 
     }, 
    }).done(function (response) { 
     // show error or something else 
    }); 
} 

(AJAX呼び出しの後)、サーバー側は、あなたがよ成功で応答した場合リダイレクトを実行します。

あなただけのテスト(私はPHPであなたを書く)ため、このようなものを使用することができ、サーバー側の例えば

:これは私はそれが仕事をしたい一方で、誰かがポストしたときに正確に好きです」

<?php 
    $test_return['the_url'] = 'http://www.google.com/'; 
    $test_return['other_data'] = 'Hello world'; 
    echo json_encode($test_return); 
    die(); 
+0

jQueryにはどんな利点がありますか?私はこれのために余分なライブラリをロードする理由は見当たりません。 – Bergi

+0

これは大きく異なっています。あなたはPOSTリクエストの代わりにフォームデータなしでGETリクエストを作成した結果を表示することになります。 – Quentin

+0

"jQueryにはどんな利点がありますか?" コード例では、すでに$セレクタでjQueryを使用しています。 – Dan

関連する問題