JS / jQuery在同一页面中将数组/变量/数据传递给PHP?

时间:2014-01-31 15:33:00

标签: javascript php session

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

我有一个php页面,其中包含一些HTML标记和一些JS / jQuery例程,用于根据“用户输入”(checkboxes..etc)构建一个“用户选择”数组。

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

环顾四周时,我读到了使用另一个(外部).php脚本来做的事情,这不是我以后的事情,我希望这样做到我所在的同一页......没有一个清醒

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

我理解PHP运行/执行FIRST ...然后其他一切..
我并没有真正试图让PHP对从JS / AJAX发送的数据做任何事情..将它保存到SESSION数组之外..

Ajax似乎需要它?

总结:

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

我已经阅读了一些关于使用AJAX发布到同一页面的URL var left left empty / blank?

编辑:

显示数据,我想传递...下面是一段代码。

它是一个对象数组..其中每个对象的1个属性是另一个数组

示例:

var somePicks = [];

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

来自所有复选框..我更新'子阵列'(push或splice..etc)

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

'this'是我希望从JS使用我最有可能的AJAX进入我的PHP会话的数组/数据。

4 个答案:

答案 0 :(得分:0)

我建议使用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"
                );

答案 1 :(得分:0)

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

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

无论哪种方式,页面都不会刷新,并且看起来与用户完全相同。

答案 2 :(得分:0)

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

我希望它对你有用

    <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"];
    }
?>

答案 3 :(得分:0)

来自一些初步测试..

这似乎没有用,(明天会做更多测试)

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

});

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

  • 无页面刷新
  • $ _ SESSION将为将来的页面更新

有没有人有这样的例子?