通过 PHP -> Javascript -> AJAX - 选项传递变量?

Posted

技术标签:

【中文标题】通过 PHP -> Javascript -> AJAX - 选项传递变量?【英文标题】:Passing variables through PHP -> Javascript -> AJAX - Options? 【发布时间】:2015-10-15 15:35:52 【问题描述】:

我目前正在开发一个 CMS,其中 phpjavascript (+ AJAX) 之间有很多通信。我在整个流程中存储变量时遇到了困难。

例如:登录后,您可以选择要编辑的站点。单击时,我将 site_id 存储在 POST 变量中。之后,我重定向到 pages-overview-page,使用这个 site_id 从数据库中读出我的所有页面。

如果我添加一个页面,会发生以下情况:

1.$_POST['site_id'] 通过 echoing 放入 javascript:

echo "<script>var siteid =".$_POST['siteid'].";</script>"

2.我的 JavaScript 然后执行 AJAX 调用:

$(".leftpanelinner").on('click','._add-page', function(event)
    event.preventDefault();
    $(".sortable").load("ajax_scripts/page-actions.php/add_page",siteID: siteid, callFunction:'add_page' );   
); 

3.这反过来会触发一个 php 脚本,该脚本会向站点添加一个页面,并对我的数据库进行查询,然后重新加载我页面的主 div:

public function new_page($iSite_id, $sTemplate, $sTitle, $sMeta, $sCSS, $sJS, $sFavicon, $aContent, $aMenu)

    $oPagemodel = new page_model;
    $iPage_id=$oPagemodel->insert_pagemodel($iSite_id, $sTemplate, $sTitle, $sMeta, $sCSS, $sJS, $sFavicon, $aContent, $aMenu);
    return $iPage_id;


public function insert_pagemodel($iSite_id, $sTemplate, $sTitle, $sMeta, $sCSS, $sJS, $sFavicon, $aContent, $aMenu)
    
        $this->set_pagemodel($sTemplate, $sTitle, $sMeta, $sCSS, $sJS, $sFavicon, $aContent, $aMenu);   
        $sSQL = "INSERT INTO `pages` (f_site_id, object) VALUES ('".$iSite_id.', '.serialize($this)."');";
        if (mysql_query($sSQL)) $this->iID = mysql_insert_id(); else return false;
        return $this->iID;

    

难道没有更简单的方式通过 JavaScript/PHP/AJAX 来存储变量,或者上面是最好的方式吗?

【问题讨论】:

你考虑过在jQuery中使用data吗? 我没有。我是否要创建一个隐藏的 html 元素来保存所有必要的信息? 没错。您可以在一个元素上存储一百个不同的变量,并轻松检索它们。元素可以被隐藏,但不是必须的。因为除非您查看源代码,否则data 永远不可见。 【参考方案1】:

您可以为此使用 cookie。

<?php
    $foo = 'lorem';
    setcookie('the_foo',$foo,time() + (86400 * 7)); 

    echo $_COOKIE['the_foo']; 
?>

你也可以用js获取和设置cookies。

【讨论】:

这与使用 _SESSIONS 变量有什么不同吗? _SESSIONS 变量也存储为 cookie 对吧? 是的。 SESSION 变量仅存储在服务器上,不能被 javascript 访问(除非您对返回会话值的 php 脚本进行 ajax 调用)。 HTTP cookie 存储在用户浏览器中。

以上是关于通过 PHP -> Javascript -> AJAX - 选项传递变量?的主要内容,如果未能解决你的问题,请参考以下文章

通过 ajax 将 Javascript 变量传递给 PHP

让 php 从通过 javascript 创建的表单中读取?

通过 POST 将 JavaScript 数组发送到 PHP

接收通过 POST 从 Javascript 发送到 PHP 的对象

通过 AJAX 将数组从 php 传递到 javascript

将 PHP $_POST 数组传递给 javascript/jQuery 以通过 ajax 发送回 PHP