2017-01-13 4 views
-3

イムを更新せずにフォームを送信:のjQuery:この方法のようにフォームを送信しようとしている

<form id="myForm" action="http://example.com/somefile" method="POST"> 
... 
... 
... 
<input type="submit" id="sendForm" value="send"> 
</form> 

アクションは、別の開発者によって開発されたそのWebサービスをリンクするので、私は、フォームを送信すると、Webサービスは、私に返信URL(http://www.example.com/thanks)で、私は何をしたいのですが、このWebサービスの返信を避け、その場所でリダイレクトのURLを変更することは可能ですか?

<script> 
    $("#sendForm").click(function() { 
     if (form_check_validation()) { 
      $("#myForm").submit(); 
      window.location.replace("http://stackoverflow.com");    
     } else { 
      return false; 
    //      event.preventDefault(); 
     } 

    }); 
</script> 

しかし、その動作していない:アイブ氏が試し

はあまりにもでそれを行います。

おかげ

注:Webサービスは、別のサーバにあるので、イムは、クロスドメインの起源の問題を持ちます。

+0

これは通常のフォーム送信では実行できません。 Ajaxなどを使用しない限り –

+0

'window.location'のフォームと設定の両方がナビゲーションを必要とし、ページは1回だけ、1つまたは他のページにナビゲートできます。 Ajaxを介してフォームデータを送信することは、ページとサービスが[同じ原点のルールを満たすか、または両方が原点を許可することで合意する]という条件で可能性があります(https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy)。それ以外の場合は、サーバー側のレイヤーが仲介する必要があります。フォームデータをサービスに渡すことができ、クライアントのリダイレクトを制御することもできます。 –

答えて

0

https://api.jquery.com/event.preventdefault/ Googleがあるあなたの友人、つぼみ...........このサービスを仮定すると、クロスの起源を可能にし、

+0

しかし、デフォルトの送信ができない場合、データはどのように送信されますか? – nnnnnn

0

ますが、別のページに移動する必要があり、なぜ使用しない/したくありませんアヤックス? $.ajaxを使用すると、簡単に電話をかけてajaxを作成できます。あなたはアヤックスでそれを行うことができます

$.ajax({ 
    url : "POST_URL", 
    type: "POST", 
    data : formData, 
    success: function(data, textStatus, jqXHR) 
    { 
     // Handle server response 
    }, 
    error: function (jqXHR, textStatus, errorThrown) 
    { 
     // Handle error 
    } 
}); 
+0

ドメイン間の問題はどうですか? OPは別のサーバー上でWebサービスを呼び出す必要があります。 – nnnnnn

+0

私は彼とこの開発者が協力していると思っており、クロスオリジンを許可しています(AJAXは実際に彼のポストのタグです)。しかし、私は答えを更新します... –

+0

うん、別のサーバーに電話したい!私の中にはありません!/ – Rodrigo

0

http://api.jquery.com/jquery.ajax/

例を参照してください。 submitイベントリスナーをフォームにバインドして、Enterキーを押したときにも送信が正しく機能するようにすることをおすすめします。

$("#myForm").submit(function (event) { 
    if (form_check_validation()) { 
     form_submit(this); 
    } else { 
     // ... 
    } 
    event.preventDefault(); 
}); 

function form_submit (form) { 
    $.ajax({ 
     url: form.action, 
     type: form.method, 
     data: $(form).serialize() 
    }); 
} 
関連する問題