1

満足のいく回答が得られなかった質問を再度投稿します。

私はAJAXメソッドが初めてです。私はphpページによって処理されているいくつかの情報を投稿したい、それをpage.phpと呼びます

私のhtmlページに、このコードを入れました:

<script type="text/javascript" charset="utf-8">
//I have put the function getXMLHttpRequest() on a separate js file
function getXMLHttpRequest() {
    var xhr = null;

    if (window.XMLHttpRequest || window.ActiveXObject) {
        if (window.ActiveXObject) {
            try {
                xhr = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e) {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
        } else {
            xhr = new XMLHttpRequest(); 
        }
    } else {
        alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
        return null;
    }

    return xhr;
}

function request(callback) {
    var xhr = getXMLHttpRequest();

    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
            callback(xhr.responseText);
        }
    };

    xhr.open("POST", "page.php", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("name=proposition");
}

function postData(Data) {

    alert(Data);

}
</script>

<button onclick="request(postData);">...</button>

page.php にはメソッドがあります

function comment(){
  //some code processing the posted infos (that works fine)...
  //to debug, I have put a
  echo('Hello world');
}

より正確には、page.php の構造はpage.php?page='mypage'&post='post'次のとおりです。最初に mypage.php への方向があり、次に mypage.php にクラスのインスタンス化があります。この__constructメソッドは、post 変数を使用して、クラス内のメソッドを呼び出しますcomment()

実際には、「Hello world」は表示されませんが、すべての Web ページ コードが表示された巨大な警告メッセージが表示されます。誰にもアイデアがありますか?

ベスト、ニューベン

4

1 に答える 1

2

私はmkkに同意し、AjaxなどにjQueryを使用することを強くお勧めします。これにより、多くの頭痛の種を防ぎ、エラーが発生しやすいプロセスを安全に処理できます。インポートするのに必要なのは、head-sectionの1行だけです。

<head>
  ...
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  ...
<head>
<body>

<script>
  $('#my-btn').click(function() {

    var data = {'key1':'value1','key2':'value2','key3':'value3'};

    $.post('page.php', data, function(callback_data){
      alert(callback_data);
    });

  });
</script>

<button id="my-btn">Make an Ajax request!</button>

<body>

そしてpage.phpで:

<?php
  echo 'The following data was sent: <br />';
  print_r($_POST);

通常、DBからデータをフェッチして、フロントエンドに書き込みます。この場合、JSONを使用するのが一般的です。実際には、 post()serialize( )などの便利なjQuery関数を確認する必要があります。これらの関数には、機能の概要を示す良い例がたくさんあります。jQueryが気に入らない場合は、問題ありません。「通常の」JavaScriptを使用しているときに、jQueryが存在することに気付くことさえありません。しかし、Ajax-Requestsに関しては、実際にはjQueryを使用する必要があります。また、JSONについて言えば、サーバー側でもjson_encode()が必要になる可能性があります。

実際、一般的にガイドするのは非常に難しいので、テクニックにもう少し慣れて、グーグルで尋ねるのが難しいいくつかの問題に遭遇した場合は戻ってきてください。

于 2012-06-26T21:37:41.577 に答える