来自PHP和输出缓冲的JavaScript(使用Ajax)
发布时间:2020-12-13 22:32:51 所属栏目:PHP教程 来源:网络整理
导读:我现在有一个来自 PHP脚本的工作JSON格式的文件. 下一步是使用JavaScript脚本检索此数据以进行排序,过滤和显示. 我有一个工作的Ajax脚本,可以测试是否可以撤回数据,但我需要对个人进行个性化处理. 在PHP中,我有一个名为MID(会员ID)的Session变量. 我正在尝试
我现在有一个来自
PHP脚本的工作JSON格式的文件.
下一步是使用JavaScript脚本检索此数据以进行排序,过滤和显示. 我有一个工作的Ajax脚本,可以测试是否可以撤回数据,但我需要对个人进行个性化处理. 在PHP中,我有一个名为MID(会员ID)的Session变量. 我正在尝试使用PHP来构建具有唯一URL的JavaScript,并将MID作为变量. 除了用外部PHP脚本中的MID变量替换JavaScript文本中的midValue变量之外,以下所有内容似乎都有效. 到目前为止,代码看起来像这样…… // This is a PHP file // Setup PHP Output Buffering to change the MID value session_start(); $MID = $_SESSION['MID']; function callback($buffer) { return (str_replace("midValue",$MID,$buffer)); } ob_start("callback"); /* Some bits I can't show as I haven't figured out the correct Stackoverflow tags (!) ... - Add the usual HTML tags such as `HTML,HEAD,TITLE,BODY,SCRIPT` etc - Include a DIV with an ID of **json**,this will be replaced by the JSON output it self. - Enclose the params variable with the `CDATA` tags to maintain the ampersand. */ params = "url=server.com/content.php?action=json&MID=" + midValue request = new ajaxRequest() request.open("POST","getcontent.php",true) request.setRequestHeader("Content-type","application/x-www-form-urlencoded") request.setRequestHeader("Content-length",params.length) request.setRequestHeader("Connection","close") request.onreadystatechange = function() { if (this.readyState == 4) { if(this.status == 200) { if(this.responseText != null) { document.getElementById('json').innerHTML = this.responseText } else alert("Ajax Error: No data recieved") } else alert("Ajax Error: " + this.statusText) } } request.send(params) function ajaxRequest() { try { var request = new XMLHttpRequest() } catch(e1) { try { request = new ActiveXObject("Msxml2.XMLHTTP") } catch(e2) { try { request = new ActiveXObject("Microsoft.XMLHTTP") } catch(e3) { request = false } } } return request } /* Add the closing `SCRIPT,BODY and HTML` tags here. */ ob_end_flush(); 并且getcontent.php文件看起来像这样…… if(isset($_POST['url'])) { echo file_get_contents("http://" . SanitizeString($_POST['url'])); } function SanitizeString($var) { $var = strip_tags($var); $var = htmlentities($var); return stripslashes($var); } 解决方法
我认为像这样简单的东西应该适合你.
<?php session_start(); $MID = $_SESSION['MID']; ?> params = "url=server.com/content.php?action=json&MID=<?php echo $MID ?>" request = new ajaxRequest() request.open("POST",true) request.setRequestHeader("Content-type","application/x-www-form-urlencoded") request.setRequestHeader("Content-length",params.length) request.setRequestHeader("Connection","close") ... // rest of javascript <?php include 'footer.php'; // include footer code here ?> 使用此方法,您只是在PHP之外输出javascript和html,因此您不需要在标记中使用它.然后,您可以只回显变量或在必要时包含页眉和页脚. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |