1

こんにちは私はサーバーにデータを送信し、それからphpファイルにそれを保存させたいです。しかし、現在、単純なPOSTでさえ機能させることができません。

これはjavascriptとhtmlの部分です:この関数は頭の中で宣言されています:

function sendTableToServer(){
    var xhttp;
    if (window.XMLHttpRequest){
        xhttp=new XMLHttpRequest();
    } else {
        xhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xhttp.open("POST","http://music.collwyncraig.info/hajimama/save_setlist.php",true);
    xhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xhttp.send("fsong=AbandonSeoul");
}

次に、このhtmlは本文にあります。

<button type="button" onclick="sendTableToServer()">Save Setlist</button>

これはphpファイルです

<?php
if (isset($_POST["fsong"])){
    echo 'trying';
    $song = $_POST["fsong"]; 
    echo $song;
    echo 'ok';
}
?>

ボタンをクリックしても何も起こりません。と送信ボタンを使用する<form>と、phpファイルがブラウザーによってロードされ、入力にアクセスできます。ただし、送信したい情報は、JavaScriptとHTML DOMを使用してhtmlページから取り出されるため、このような関数を使用したいと思います。では、なぜ何も起こらないのですか?:)

4

4 に答える 4

1

jQuery ajaxを使用したくない場合は、純粋なajaxを使用してみてください。

<html>
    <head>
    <script type="text/javascript">
    sendTableToServer()
    {

    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
        else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        //document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","http://music.collwyncraig.info/hajimama/save_setlist.php?fsong=AbandonSeoul", true);
    xmlhttp.send();
    }
    </script>


<?php
if (isset($_GET["fsong"])){
    echo 'trying';
    $song = $_GET["fsong"]; 
    echo $song;
    echo 'ok';
}
?>

ソース:http ://www.w3schools.com/php/php_ajax_php.asp

于 2012-04-07T05:04:54.587 に答える
1

ページからデータを取得する以外はフォームと同じ動作が必要な場合は、フォームを作成して送信するだけです。

var form = document.createElement('form');
form.action = 'http://www.example.com/do-something';
form.method = 'post';
var song = document.createElement('input');
song.type = 'hidden';
song.name = 'song';
song.value = 'Song Name';
form.appendChild(song);
form.submit();
于 2012-04-07T05:05:42.020 に答える
0

AJAXは本質的に非同期であることを忘れないでください。データはすぐには返されないため、完了条件とエラー条件のコールバックを定義する必要があります。AJAXでこのGoogleチュートリアルに従うことをお勧めします。JQueryは、可能な場合、プロセスを簡素化します。

唯一の目標がファイルに書き込むためにサーバーにデータを送信することである場合、AJAXやJavascriptは必要ありません。を設定<form action="http://music.collwyncraig.info/hajimama/save_setlist.php">し、サーバーに送信するデータをフォームタグに入力するだけです。AJAXにJavascriptを使用する唯一の理由は、「より洗練された動作」のためです。これは、探している単純な使用法よりも複雑な場合があります。

于 2012-04-07T05:05:23.263 に答える
0

アドレスバーにあるものと同じではないドメインにPOSTを作成している場合、失敗します。クロスドメインAJAXリクエストを行うことはできません:

xhttp.open("POST","http://music.collwyncraig.info/hajimama/save_setlist.php",true);

スキームとドメインを削除してみてください。

xhttp.open("POST","/hajimama/save_setlist.php",true);

ここではhttpとドメインは必要ないため、これにより現在のドメインに関連するPOSTリクエストが作成されます。

于 2012-04-07T05:06:59.037 に答える