【问题标题】:Is there a way to get create a php varialble from ajax data returned from another php script有没有办法从另一个 php 脚本返回的 ajax 数据创建一个 php 变量
【发布时间】:2021-05-08 22:20:40
【问题描述】:

我有一个 php 脚本,它使用我的选择框选项创建一个网页

例如 index.php 有一个 html 选择框:

<select id="sel_option">
   <option value="0">- Select Option -</option> ....

这是在 sel_option 上发布的,使用 ajax 更改为 php 处理脚本,如下所示:

<script type="text/javascript">
        $(document).ready(function(){

            $("#sel_option").change(function(){
                var optionid = $(this).val();

                $.ajax({
                    url: 'procscript.php',
                    type: 'post',
                    data: {option:optionid},
                    dataType: 'json',
                    success:function(response){ ...

我想再次将一些返回的数组拉入 Php 变量中,以更改一些制表符组或格式选项

eg  $("#table1").tabulator({
        height:500 ,
        VirtualDomHoz:true,
       <? echo  "groupBy:[\"group_option_from_response array\"]," ?>

所以 Php script1 通过 ajax 发送选项数据 -> php script2 从 mysql db 收集数据并返回到 script1

我尝试在 php 脚本 2 中创建会话变量,它适用于第一次选择,但之后它似乎将初始会话缓存在浏览器中,来自第二个 php 脚本的响应会话似乎没有复制到后续调用中的第一个脚本。我认为这可能是因为第一页永远不会重新加载,所有选择都是在使用 js 加载的第一页内完成的??

如果我想要做的是,如果 php 不可能,我可以使用一些 js 代码重写下面制表符中的 php 部分吗?

$("#table1").tabulator({
        height:500 ,
        VirtualDomHoz:true,
       <? echo  "groupBy:[\"group_option_from_response array\"]," ?>
        placeholder:"No Data Set",
        columns:[
        {title:"ID", field:"ID",width:30},
         {title:"F_name", field:"f_name", sorter:"string"},
<? echo "{title:\"different var\", field:\"field2\", sorter:"string"},"; ?> 

感谢收看! 史蒂夫

【问题讨论】:

    标签: javascript php json ajax


    【解决方案1】:

    通过 ajax 接收数据,然后创建制表符对象。如果该对象有通过 ajax 传来的数据,您可以添加它,然后实例化它。

    success:function(response){ ...
      response = JSON.parse(response);
      createTabulator(response,"table1")
    
    });
    
    function createTabulator(data, idToUse) {
      var tabobject = {
        height:500 ,
        VirtualDomHoz:true,
        placeholder:"No Data Set"
      }
    
      if (data.groupBy) {
         tabobject.groupBy = [data.groupBy]
      }
    
      var cols = [
       {title:"ID", field:"ID",width:30},
       {title:"F_name", field:"f_name", sorter:"string"}
      ]
    
     // if there is columns data coming in, bring it as an array...
      data.columns.forEach(item => {
      cols.push({title: item.title, field: item.field, sorter:"string"})
      })
    
      tabobject.columns = cols;
    
      $("#"+idToUse).tabulator(tabobject);
    }
    

    【讨论】:

    • 谢谢约翰,这正是我所需要的。我的 js 真的很生锈,但我可以看到你在做什么。
    【解决方案2】:

    有很多方法可以实现您想要的。我认为最好的方法就是将变量推送到 ajax 请求。

    $.ajax({
        ...
        data: {
            option:optionid,
            groupoption: "groupoptionvalue"
        }
        ...
    });
    

    第一次您只需将其发送为空。 PHP 将始终能够处理该值,因为您总是会在一开始就捕获它。

    如果你的变量是一个对象或者一个数组,只需要在 javascript 中使用 JSON.parse/JSON.stringify 和在 PHP 中使用 json_encode/json_decode 来进行通信。

    【讨论】:

    • 有趣的 Anibal,让我可以更有效地完成流程的一方面。
    猜你喜欢
    • 1970-01-01
    • 2019-12-05
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2010-11-24
    • 2013-10-14
    • 1970-01-01
    相关资源
    最近更新 更多