2012-04-08 8 views
1

私は自分のウェブサイトに、同じページに残りながらすべての情報を提出する(submitを押した後に)HTMLフォームを持っています。 JavaScriptファイルでこれを有効にするので、入力してsubmitを押すと、モジュールはフェードアウトし、同じページに残りながら情報を送信していただきありがとうございます。ローカルJavaScriptファイル内で外部PHPファイルを呼び出す?

ここでその機能を有効にするJSでは、フォームを送信する実際のPHPを呼び出す必要があります。

var result= postData(data,'./form.php"');  
if (result !=null){ 
    $('#form').html('<img src="./images/thankyou.png"></img>'); 

は今、これは完全に働いた:

それは内部的に私のサーバー上に位置していた場合には、コードの行はこのように見えました。私はそのPHPを別のサーバに移さなければなりませんでした。http://www.somesite.com/php/action.php

どのように私はそのPHPを呼び出すことができますか?試しました

var result= postData(data,'http://www.somesite.com/php/form.php"'); 

となります。それを動作させる最も簡単な方法は何ですか?

答えて

3

これはAJAXを使用するためのものです。これらの答えは、あなたが同じドメインで作業していることを前提としています。

簡単な方法

は、AJAXを使用する最も簡単な方法は、しかし、これは(下記参照)厳密には必要ではない、jQueryのを使用することです。 http://www.queness.com/post/160/create-a-ajax-based-form-submission-with-jquery

一般的なサンプル:

$.ajax({ 
    url: "test.html", 
    context: document.body 
}).done(function() { 
    $(this).addClass("done"); 
}); 

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

少ない簡単な方法

あなたはjQueryのを使用したくなかった場合、あなたはそれなしで行うことができます。 http://www.webreference.com/programming/javascript/ajax_forms/index.html

サンプルHTML

<p><html><br/> 
<head><br/> 
<title>Form Posts with Ajax</title><br/> 
<script type="text/javascript" src="js/Ajax.js"></script><br/> 
<script type="text/javascript" src="js/Post.js"></script><br/> 
</head><br/><br/> 
<body><br/><br/> 
<form action="bridge.php" method="post" onsubmit="Post.Send(this); return false;"><br/> 
Name:<br/><input type="text" name="name" /><br/> 
<br/><br/><br/> 
Message:<br/><textarea name="message"></textarea><br/> 
<br/><input type="submit" value="submit" /><br/> 
</form><br/><br/> 
</body><br/> 
</html></p> 

サンプルのJavaScript

var Ajax = new Object(); 
    Ajax.isUpdating = true; 
    Ajax.Request = function(method, url, query, callback) 
    { 
     this.isUpdating = true; 
     this.callbackMethod = callback; 
     this.request = (window.XMLHttpRequest)? new XMLHttpRequest(): new ActiveXObject("MSXML2.XMLHTTP"); 
     this.request.onreadystatechange = function() { Ajax.checkReadyState(); }; 
     if(method.toLowerCase() == 'get') url = url+"?"+query; 
     this.request.open(method, url, true); 
     this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
     this.request.send(query); 
    } 
    Ajax.checkReadyState = function(_id) 
    { 
     switch(this.request.readyState) 
     { 
      case 1: break; 
      case 2: break; 
      case 3: break; 
      case 4: 
       this.isUpdating = false; 
       this.callbackMethod(this.request.responseXML.documentElement); 
     } 
    } 
+0

AJAXのjQueryを読み込むことは、過剰なもののようです。 – Francisc

+0

私はフォーム全体をやり直す必要があると言っていますか?これには単純な方法はありませんか? – user755889

+1

@ user755889いいえ、フォームを変更する必要はありません。送信を傍受してAJAXを使用して送信するには、JavaScriptを追加するだけです。私が投稿したリンクをご覧ください。 – msigman

0

あなたが別のサーバーにあるドメインコンテキストからフォームデータを提出しようとしているように聞こえます。これは、JSONPまたはクロスドメインJavaScriptを使用して行うことができます。

function sendFormData(urlToSendTo) { 
    var script = document.createElement("script"); 
    script.setAttribute("type","text/javascript"); 
    script.setAttribute("src", urlToSendTo); 
    document.getElementsByTagName("head")[0].appendChild(script); 
} 

$('form').click(function() { 
    src="http://www.example.com/php/action.php?name=" + $(this).find('[name="name"]').val() + "&email=" + $(this).find('[name="email"]'); 
    sendFormData(src); 
    return false; // if this doesn't work, try event.preventDefault(); 
}); 

あなたが本当にhttp://example.comでホストされているPHPのページへhttp://domain.comでロードされたWebページからのデータを送信しようとしている場合、これはあなたがページをリロードせずにサーバにデータを送ることができる唯一の方法です。 PHPページが同じサーバー上にある場合は、@ msigmanによってポストされた別のソリューションが動作します。ローカルサーバーでは

を::<script type="text/javascript" src="path/to/external/php/file"></script>

をとPHPファイルを変更します。

+0

臆病なdownvoteとは何ですか?隠れて出てきて、これについて間違っていると思うものを説明してください:) – jmort253

+1

私は神秘的なdownvoteを持っています...多分誰かがちょうど悪い日を過ごしていた。 – msigman

0

この方法で試してみてください

<? 
Header("content-type: application/x-javascript"); 
//your php codes here as normal 
//your dispalying resoursec here in this format: echo "document.write(\"what you want to display\")"; 
?> 

この外部のphpファイルが出力されますローカルサーバーへのJavaScriptファイル。

関連する問題