2014-11-05 42 views
0

重新这篇文章AJAX Post to self in PHP自我处理PHP页面使用Ajax

使用的exit()不会的东西都该调用之前打印? 我写了标记/ ph引用外部的css php脚本。该脚本使用print(或echo)和一个调用标头('type:text/css')的 。这不是有用的或必要的自我处理PHP页面?我发现 他们无休止的有用。整个网站可以显示在任何状态的一页使用获取查询和帖子 从窗体。我记得早些时候读到的文字,当开始学习php时断言,当页面提交给自己时,浏览器将自动使用异步请求。但在某些情况下,显式的ajax调用是有用的。

+0

你为什么认为需要打印什么? – 2014-11-05 00:43:16

+0

脚本如何在没有它的情况下发送任何内容? – user1739140 2014-11-05 00:50:44

+0

为什么它需要发送任何东西?根本不需要HTTP POST操作来生成任何内容。 – 2014-11-05 00:57:58

回答

0

这就是我正在做的和我正在做的事情。 我有一个文本字段和一个页面中的按钮 我写文本到文本字段并单击按钮 该按钮的JavaScript单击事件处理程序获取文本字段值 并将其附加到附加到该url的get查询在请求中。方法是获取

编辑:指定已成功的环境。 我使用Firefox v12.0在Mac OSX上预装了本地计算机上的apache服务器。 (任何一个运行OSX的Mac,都有一个预先安装好的apache服务器,但是激活php需要编辑httpd.com文件 以取消加载php模块的行的注释。此外,还有一行 告诉Apache使用什么扩展名来查找和执行php代码,还必须告诉它 以index.php作为索引文件来运行php并将其作为目录索引文件)

JavaScript代码:

function _FETCH() 
    { 
     this.init = function(oName, elem, txt) 
      { 
      var but = document.getElementById(elem); 
       but.addEventListener('click', function(){ oName.req('GET', self, '', null, oName, txt) }) 
      } 

     this.req = function(method, url, type, msg, oName, txt) 
      { 
      var field = document.getElementById(txt); 
       url+="?ajxTst="+encodeURIComponent(field.value); 
      var it = new XMLHttpRequest(); 
       it.open(method, url, type); 
       it.setRequestHeader('Content-Type', 'text/plain'); 
       it.onreadystatechange = function() 
        { 
        var elem = document.getElementById('well'); 
        switch(it.readyState) 
         { 
         case 0: 
         case 1: 
         break; 
         case 2: 
         case 3: 
         elem.childNodes[0].data = " waiting"; 
         break; 
         case 4: 
         oName.handleResponse(it.responseText); 
         break; 
         default: 
         alert('ajax processing error'); 
         break; 
         } 
        } 
       it.send(msg); 
      } 

     this.handleResponse = function(resp) 
      { 
      var elem = document.getElementById('well'); 
       elem.childNodes[0].data = " "+resp; 
      } 
    } 

的PHP,JavaScript和标记在页面:

<?php 
/* 
created 11/4/2014 
*/ 
$_self = basename($_SERVER['PHP_SELF']); 
if($_POST || $_GET) 
    { 
    if($_GET['ajxTst']) 
    { 
     header("Content-Type: text/plain"); 
     print $_GET['ajxTst']; 
     exit(); 
    } 
    } 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<title>JS lab 2</title> 
<link rel="stylesheet" type="text/css" href="local.css" media="screen" /> 
<script type="text/javascript" src="local.js"> 
</script> 
<script type="text/javascript"> 
//<![CDATA[ 
    var self = "<?php print $_self; ?>"; 
    window.onload = function() 
    { 
    var ajx = new _FETCH(); 
     ajx.init(ajx, 'send', 'tlk'); 
    } 
//]]> 
</script> 
</head> 
<body> 
<div class="panel"> 
<p class="title">Js Lab 2</p> 
<p class="norm"><a href="../?uar=lab_3">Lab 3 home</a></p> 
<p class="norm">Work with ajax and self processing page (this)</p> 
<hr /> 
<p class="norm" id="well"> idle </p> 
<p class="norm"> 
<input type="text" id="tlk" value="" /><input type="button" id="send" value="send" /> 
</p> 
</div> 
</body> 
</html> 

我希望找到这个的人会找到它。我花了一段时间才搞定它