【问题标题】:JS/jQuery passing array/variable/data to PHP in same page?JS/jQuery 在同一页面中将数组/变量/数据传递给 PHP?
【发布时间】:2014-01-31 15:32:59
【问题描述】:

我希望你能指出我正确的方向。

我有一个 php 页面,其中包括一些 HTML 标记和一些 JS/jQuery 例程,用于基于“用户输入”(复选框等)构建“用户选择”数组。

我的问题是,如何将这个(多维)数组传递给 PHP,即在同一页面中? (最终我想将此数据/数组保存到我的 PHP 会话中)

在环顾四周时,我读到了有关使用另一个(外部).php 脚本来做的事情,这不是我所追求的,我希望对我所在的同一页执行此操作...无需刷新.

$.post() 会为我做这件事吗?没有页面刷新(如果我们抑制事件或其他)...... 并且 - 不 - 使用外部 .php 脚本?

我了解 PHP 首先运行/执行......然后是其他一切......
我并不是真的想让 PHP 对从 JS/AJAX 发送的数据做任何事情。除了将其保存到 SESSION 数组之外。

似乎需要 Ajax?

总结一下:

  • 1.) PHP 和 JS 在同一页面(文件)中/在同一页面上
  • 2.) 无页面刷新
  • 3.) 没有外部 PHP 脚本可以做任何事情。
  • 4.) 尝试在同一页面中获取(多维)数组到 PHP 会话。
  • 5.) 每次用户“单击”复选框时,我都会尝试“更新”PHP SESSION 数组。

我已经阅读了一些关于使用 AJAX 发布到同一页面的内容,但 URL var 为空/空白?

编辑:

为了显示数据,我想传递...这是代码的 sn-p。

它是一个对象数组。其中每个对象的属性之一是另一个数组

示例:

var somePicks = [];

somePicks.push({casename:caseName, fullname:fullName, trialdate:trialDate, citystate:cityState, plaintiff:plaintiff, itemsordered:itemsOrdered=[{name:itemOrdered, price:itemPrice}]});

当从所有复选框中..我更新“子数组”(推送或拼接..等)

somePicks[i].itemsordered.push({name:itemOrdered, price:itemPrice}); 

'this' 是我想从 JS 使用我最有可能使用 AJAX 的任何东西进入我的 PHP 会话的数组/数据。

【问题讨论】:

    标签: javascript php session


    【解决方案1】:

    您可以这样做,但本质上它与使用外部 PHP 文件没有任何不同。 PHP 代码在发送到浏览器之前在服务器上执行。如果不重新连接服务器,您将无法更新 PHP SESSION 数组。

    如果你真的想用 post 来调用当前页面(我不认为你可以将 url 留空,但你可以提供当前文件名),你可以只在顶部有 PHP 处理程序代码的页面。但是,这与将处理程序代码放入外部文件并调用它完全相同。

    无论哪种方式,页面都不会刷新,并且在用户看来完全一样。

    【讨论】:

      【解决方案2】:

      您可以将 $.ajax 函数与 $(#formid).serializearray () 一起使用。并在 $.ajax 函数中使用 url 作为你的表单操作。

      希望对你有用

          <form id="formId" action="post.php" methor="post">
                  <input type="checkbox" name="test1" value="testvalue1">TestValue1
                  <input type="checkbox" name="test2" value="testvalue2">TestValue2
                  <input type="button" id="buttonSubmit" value="click here" />
              </form>
              <script>
                $("document").ready(function () 
                {
                  $("#buttonSubmit").click(function () }
                  {
                      var serializedata=$("#formId").serializeArray();
                      $.ajax(
                      {
                          type:"post",
                          url:$("#formId").attr("action"),
                          data:{"data":serializedata},
                          success:function()
                          {
                              alert("yes");
                          }
                      });    
                  });
      
               });
            </script>
      <?php
          if(isset($_POST))
          {
              session_start();
              $_SESSION["data"]=$_POST["data"];
          }
      ?>
      

      【讨论】:

      • hmm.. 你能帮我扩大一点吗?或者提供更好的代码示例? :) 我希望尝试:1.)按照上面链接/帖子中的建议将 URL 全部省略以发布到同一页面 2.)尝试 PHP/Ajax 调用的同一页面的 url/页面名称是在 3.) 如果一切都失败了..我会尝试一个 external.php 脚本来做到这一点..(这看起来很浪费而且相当愚蠢)..我想要的(如果有人有时间/经验的话)是首先获取选项 #1 和 #2 的一些示例代码...
      • (我猜 1 条评论太长)但是,我不确定如何制定 Ajax 调用来更新会话 var *或将我的 JS 多维数组传递给我的会话跨度>
      • 嗨..感谢您的回复。我会试着把它拆开,看看我是否可以将它用于我的项目。不同之处在于..我“不”使用表单,只有一个提交按钮/操作背景摘要:我查询数据库并获得一些“结果”..这些结果显示为“面板”。 (每个返回的结果/记录1)..在每个面板上..我有一个“组”复选框..每当用户单击复选框(添加项目的一个方面)..我将它添加到主数组..(称为:userPicks[])..
      • ...继续... 这个 userPicks[] 数组是一个对象数组。在每个被推入数组的对象中。它们的一个属性是另一个数组。我想(每次用户单击复选框)更新我的数组(我正在这样做)..并用这个数组推送/更新我的 SESSION 变量..所以如果我转到下一页..我可以获取更新的会话数据..(不需要在 SAME PAGE 上使用) serializeArray() 会影响我想要传递/保存的复杂 userPicks[] 数组吗?
      • ...继续...所以没有“表单”(可以这么说)...只需检查每个“面板”中的复选框...更新数组...我想推送这个主(JS)数组到我的(PHP)会话
      【解决方案3】:

      我建议使用Jquery的.post方法,调用一个PHP文件,发送数组并在调用的PHP中处理。

      可以在这里找到关于 .post() 的 jquery 文档:http://api.jquery.com/jquery.post/

      已编辑:

      我前段时间用过这个案例:

      document.getElementById("promotion_heart_big").onclick = function(e){
                      $.post("' . URL_SITE . 'admin/querys/front.make_love.php", 
                          {
                              id_element: ' . $business["promotion"]["id"] . ', 
                              type: \'promotion\', 
                              value: $("#field_heart").val()
                          },
                          function(data) {
                              if (data.result) {
                                  //some long code....
                                  }
                              }
                          },
                          "json"
                      );
      

      【讨论】:

      • 谢谢...虽然我不确定您是否正确阅读了这个问题? (不使用外部 .php 脚本)..我想“发布”(缺少更好的术语)到同一页面..也许这会起作用:stackoverflow.com/questions/7561569/…
      • 你能举个例子吗?那么使用外部php脚本呢?但最重要的是保存复杂的数据(对象数组也有数组作为对象属性)不知道如何将如此复杂的数据保存到会话中?
      【解决方案4】:

      来自一些初步测试..

      这似乎不起作用,(明天将进行更多测试)

      $.ajax({
          type : 'POST',
          //url : 'sessionSetter.php',
          data: {
              userPicks : userPicks,
          },
          success : function(data){
              //console.log(data);
          },
          error : function(XMLHttpRequest, textStatus, errorThrown) {
      

      });

      有人提到发布到外部 .php 脚本 - 或 - 发布相同的页面会产生相同的结果..

      • 没有页面刷新
      • $_SESSION 将针对未来的页面进行更新

      有人有这方面的例子吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-22
        • 1970-01-01
        • 2023-04-02
        • 2020-06-06
        • 2013-05-21
        • 2011-10-13
        • 2018-08-05
        相关资源
        最近更新 更多