0

现在我有两页 HTML 页面,其中包含 Ajax 刷新 div 标记代码并使用来自另一个页面的发布数据,$_POST第二个页面是 PHP 页面,它从 mysql 表中选择数据,所以让我们看看我用来重新加载 div 标记的代码使用阿贾克斯:

function Ajax(){
var xmlHttp;
    try{    
        xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
    }
    catch (e){
        try{
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
        }
        catch (e){
            try{
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e){
                alert("No AJAX!?");
                return false;
            }
        }
    }

xmlHttp.onreadystatechange=function(){
    if(xmlHttp.readyState==4){
        document.getElementById('ReloadThis').innerHTML=xmlHttp.responseText;
        setTimeout('Ajax()',2000);
    }
}
xmlHttp.open("GET","data.php",true);
xmlHttp.send(null);
}

window.onload=function(){
    setTimeout('Ajax()',2000);
}

该代码重新加载此 div 标记<div id="ReloadThis"></div>并从data.php文件中获取内容并将其重新加载到此 div 标记中,这很棒,但我的问题是在 PHP 文件中包含发布的数据,当它重新加载发布的数据时丢失并显示给我Undefined index。我在谷歌上搜索了如何做到这一点,我发现$.post在 AJAX 中使用,所以$.post对这个问题很有用,如果是的话,我该如何使用它?

谢谢 :)

4

1 回答 1

2

HTTP 是一种无状态协议,这意味着服务器不需要保存前一个请求发送的数据。但是有许多方法——显然独立于 HTTP——可供您使用来保存该数据并在需要时检索它。

现在,如果我正确理解了这个问题,您希望数据可以在第二次请求时返回到 $_POST 中。好吧, $_POST 将只为请求it won't be!保存发送给它的数据(通常来自表单或 ajax) 。current如果它一直保存对服务器的请求的结果,事情很快就会失控。您可以使用其他机制将数据从易到难保存:

  • $_GET:您可以使用 url 跨页面保存数据,并通过 $_GET 数组访问它们。这应该很容易但非常麻烦,并且不推荐用于数据持久化的方法。
  • 会话变量:如前所述,您不能在 $_POST 中为多个请求保存数据。但是您可以将数据保存在 $_SESSION 中一段时间​​(这取决于您的配置,但需要大约 24 分钟的干净 PHP 安装,请参见此处)。您可以将该值更改为您想要的值,请参见此处。如果您想实现某种特定于用户的页面,例如在 facebook、gmail 中,会话变量通常很有用... 从文档中了解有关会话的更多信息。
  • 文件:您可以将数据保存到 Web 服务器上的文件中,并在需要返回数据时读取这些文件。但是大多数网络应用程序都很复杂,需要太多的结构,试图将如此复杂的数据放入自定义文件中不仅不方便,而且很疯狂。
  • 数据库:您已经提到了这一点,但如果您正确使用它,您应该不会遇到太多麻烦。基本上,您从页面获取数据,并且您将在 $_POST 中拥有该数据(如果这是您正在使用的方法)那么save the data in a database(e.g. a mysql database).现在这就是您的data.php用武之地:data.php可能不使用 $_POST!事实上,您正在使用 $_GET。它必须获取您保存在数据库中的数据并将其发送回给您。

这个答案超出了您最初的问题,因为您似乎对持久性还没有足够的了解。关于:这是一个 jQuery 方法,允许您使用方法而不是通常的方法$.post从服务器获取数据,但这将是与数据库交互的脚本需要的一些参数。有关更多信息,请参阅文档POSTGETit doesn't get data that's in the $_POST array, on the other hand you can pass something to $_POST and the server script can act on that data.


我没有提供任何代码示例来帮助您,因为您也提供的代码示例无法让人们给出答案。由于您是新手,以下页面将有助于您提出更好的问题:

如果英语不是您的主要语言,您可以提及它并参与您的问题的编辑,而其他人正在努力改进它们。

于 2013-07-21T20:51:46.873 回答