加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

来自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,因此您不需要在标记中使用它.然后,您可以只回显变量或在必要时包含页眉和页脚.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读