2011-09-18 8 views
0

フォームが読み込まれたときに実行したいJavascriptがあります。フォーム自体を処理します。フォームがロードされると、Javascriptはうまく動作しますが、フォームが送信され、そのページがJavascriptで処理されたときにJavascriptが破損します。フォームが処理されていない場合にのみ、特定のJavascriptスニペットを実行するにはどうすればよいですか?

フォームが処理されていないときにのみJavascriptを実行する方法はありますか?

はUPDATE:フォームが処理されたときに、私はこのエラーを取得する

(JavascriptがAJAX要求をしている):

<form method="#" action="post"> 
    <!--form elements--> 
</form> 

:ここ

TypeError: 'undefined' is not an object XMLHttpRequest cannot load [ajax request url] Origin [original page] is not allowed by Access-Control-Allow-Origin

はHTMLですここにはJavaScriptがあります:

ajax.onreadystatechange=function() { 
    if (ajax.readyState==4 && ajax.status==200) { 
     document.getElementById("invitestar-message").innerHTML=ajax.responseText; 
     var signup = document.getElementById("invitestar-content-container"); 
     setTimeout(function(){ 
      body.removeChild(document.getElementById('invitestar-verifying')); 
      signup.style.display = "block"; 
     }, 500); 
    } 
} 

ajax.open("GET","http://nvrforget.com/invitestar/check-invite/?invite=kNdqyJTjcf",true); 
ajax.send(); 

このjavascriptが実行されるドメインはhttp://nvrforget.com/ではありません。

+3

コードを共有できますか?クロスドメインのAjaxですか? –

+0

デフォルトでは、一部のブラウザはクロスドメインAjax呼び出しを許可していません。 –

+2

あなたは「ページが自分自身を処理するとき、JavaScriptがそれを壊す」とはどういう意味ですか?それはどうしたらいいのですか? 「ページ自体が処理する」とはどういう意味ですか?問題の原因や関連するコードを投稿することについて、より詳細に説明することなく、私たちを助けることはできません。 – jfriend00

答えて

2

このエラー:Webページが配置されているよりも、あなたが別のドメインにAjaxの呼び出しを行うことができないので

XMLHttpRequest cannot load [ajax request url] Origin [original page] is not allowed by Access-Control-Allow-Origin 

が生じます。 same-origin policyのこの説明を参照してください。

JSONPは、クロスオリジンのajax呼び出しを行う方法です。これには、JSONPのサーバー側を実装するための協力サーバーと、ajaxリクエストをスクリプトタグとして追加するメソッドが必要です。 jQueryやYUIのようなライブラリは、JSONPのクライアント側の部分をサポートしていますが、あなたはそれを自分で行うことができます(しかし、まだ協力しているサーバが必要です)。 Google JSONPについて詳しく知りたい方は、こちらをご覧ください。

+0

これを行う方法はありますか?別のドメインにajaxを呼び出す必要があるからです。 – chromedude

+0

私はJSONPについて私の答えにもっと多くを加えました。 – jfriend00

+0

大丈夫、ありがとうございました。 – chromedude

関連する問題