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”,而是一条巨大的警报消息,其中显示了我的所有网页代码。有人有想法吗?

最好的,纽本

4

1 回答 1

2

我同意 mkk 的观点,并且强烈建议将jQuery用于 Ajax-stuff - 它可以让您免去很多麻烦,并为您安全地处理容易出错的进程。在你的 head-section 中只需要一行就可以导入它:

<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);

通常您想从数据库中获取一些数据,然后将其写入您的前端。在这种情况下,通常使用 JSON。实际上你应该看看一些有用的 jQuery 函数,比如post()serialize(),它们有很多很好的例子,可以让你对这些功能有所了解。如果你不喜欢 jQuery,没关系,在使用“普通”JavaScript 时,你甚至不会注意到它的存在。但是当涉及到 Ajax-Requests 时,你真的应该使用 jQuery。谈到 JSON,您可能还需要在服务器端使用json_encode()

实际上一般来说指导你是相当困难的,请多熟悉一些技术,如果你遇到一些在 google 上很难问的问题,请回来。

于 2012-06-26T21:37:41.577 回答