1

Web サイトに HTML フォームがあり、(送信を押した後) すべての情報を同じページに表示したまま送信します。JavaScript ファイルはこれを有効にするため、入力して [送信] を押すと、モジュールがフェードして、同じページに留まりながら、情報を送信していただきありがとうございますと表示されます。

関数を有効にする 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"'); 

そしてそれはうまくいきます。それを機能させる最も簡単な方法は何ですか?

4

3 に答える 3

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 を使用したくない場合は、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);
        }
    }
于 2012-04-08T01:16:54.027 に答える
1

あるドメインコンテキストから別のサーバーにフォームデータを送信しようとしているようです。これは、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://domain.comでロードされたWebページからhttp://example.comでホストされているPHPページにデータを送信しようとしている場合、これが、リロードせずにサーバーにデータを送信できる唯一の方法です。ページ。PHPページが同じサーバー上にある場合、@msigmanによって投稿された他のソリューションが機能します。

于 2012-04-08T01:26:57.807 に答える