2011-11-15 18 views
0

jQueryでそれを行う方法を示す同様の質問があります。残念ながら、私はプロトタイプを使用しており、コードを翻訳するのはあまり簡単ではありません。発生する必要があるものフォームを送信して同じページに留まる方法

Submit form and stay on same page?

は、サブドメイン上のページに掲載されている値(Eメール)であり、ユーザーがリダイレクトされません。私はsubDomainのページを編集するためのコントロールがありません。

どのような援助をいただければ幸いです。

function submitEmailForm(){ 
     var userEmail = $('Text').value; 
     $('EmailForm').action = 'http://subDomain.myDomain.com/?email_address='+userEmail; 
     $('EmailForm').request({ onComplete: function(){ return false;} }); 
    } 

<form method="post" id="EmailForm" onsubmit="submitMobileEmailForm(); return false;"> 
      <input type="text" id="Text"/> 
      <input type="submit" id="Submit" value=""/> 
</form> 
+0

のonClickではなく、

のonSubmitを使用した方が良いと思います。まだデバッグ中です。 – SFox

+0

あなたが本当に欲しいのはAJAXです。あなたはそのhttp://api.jquery.com/jQuery.ajax/のためにjQueryを使うことができます(これはポストhttp://api.jquery.com/jQuery.post/というポストがあります) – Thor84no

+1

xmlhttprequestを使用できません[この例](http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first)を参照してください。 – puk

答えて

1

あなたはAJAXでフォームの送信をシミュレートすることができます。

(注:私は、私は、テンプレートとしての働いていた古いプロジェクトを使用し、私は使用されているいくつかのテクニックは少し古いかもしれません例えば、イベント処理が異なる動作をする場合があります。。)

function ajaxFormSubmission(form) 
{ 
    xhrThingy = yourFunctionForObtainingXMLHttpRequestInstance();// XHR support is different for various browsers, so you might need to have browser specific code. 
    xhrThingy.onreadystatechange = eventHandlerHere; 
    xhrThingy.open('POST', 'theFileThatWillHandleYourRequest.php', true);// The used arguments are: HTTP request Method, request url, asynchronous flag 
    xhrThingy.setRequestHeader("Content-type", "application/x-www-form-urlencoded");// Simulating Form Submission 


    var emailData = form.elements['Text'].value;// Extracting needed data from form 
    var postData = "emailAddress=" + emailData; 
    xhrThingy.send(postData); 
} 

eventHandlerHere機能を応答を確認することができます。このような何か:私が働いていたプロジェクトで

function eventHandlerHere() 
{ 
    if (xhrThingy.readyState==4 && xhrThingy.status==200) 
    { 
     var response = xhrThingy.responseText 
     // Do whatever you need to do with the email adress 
    } 
} 

、私は、迅速なプロトタイピングのためのネストされた方法を使用するので、あなたの正確な実装が異なります。たとえば、スコープ内にあるxhrThingyはajaxFormSubmission関数の内部にネストされているため、参照しています。

+0

RCに感謝します。私は実際にプロトタイプを使って今述べたAjaxのアプローチを試しています。これまでのところ、私の要求はクロスドメインなので、望み通りに機能するようには見えません。私はまだそれを回避しようとしています。 – SFox

+1

クロスドメインは重要ではありません。サーバーがそれを処理できるように要求を書式化する限り、AJAX要求を送るのに問題はないはずです。 – Matthew

+0

アクセスする必要のあるデータがある場合は、実際に同じ発信元ポリシーを回避する方法を見つける必要があります。私は「新しいページを読み込まずにフォームを提出する方法は?」という質問に答えようとしました。 同じ起点ポリシーを回避するいくつかの方法がありますが、このポリシーはクロスサイトスクリプティング攻撃を防御するためのものです。 –

1

JQueryでボタンをクリックすると同じページにリダイレクトする必要があります。

http://www.webdeveloper.com/forum/archive/index.php/t-105181.html

+0

彼はおそらくページをリフレッシュせずに(AJAX)、いい試してみてください:) –

+0

私は実際にページをリフレッシュしても大丈夫です。ユーザーがデータを送信しているページに移動しない限り、私は満足しています。 =) – SFox

+0

これはどのように答えですか?明示してください? – Matthew

関連する問題