【问题标题】:send array to php from javascript?从javascript发送数组到php?
【发布时间】:2010-01-26 10:42:57
【问题描述】:

我想使用 jquery ajax 向 php 发送一个 javascript 数组。

$.post("controllers/ajaxcalls/users.php",
{
    links: links
});

第二个“链接”是一个 javascript 数组。

当我得到这个数组时:

'1' ...
    '1' => "comment1"
    '2' => "link1"
    '3' => "link2"
    '4' => "link3"
'2' ...
    '1' => "comment2"
    '2' => "link4"

然后使用:

var jsonLinks = JSON.stringify(links);
alert(jsonLinks);

会给我:

[null,[null,"comment1","link1","link2","link3"],[null,"comment2","link4"]]

在我看来,有些地方不对劲。我不能在 php 端使用 json_decode 来获取元素。

我应该使用什么函数将其转换为 json 以及如何在 php 端访问它?几个小时以来一直在努力解决这个问题......希望能得到一些帮助。

【问题讨论】:

    标签: javascript jquery arrays


    【解决方案1】:

    您可以使用json_decode 来读取传递的json 值。看看这个post

    【讨论】:

    • 在您更新的帖子中,您显示的数组不是有效的 javascript。请发布您用于分配数组的真实 JavaScript 代码。
    【解决方案2】:

    我不确定你的例子是否可行(你试过了吗?)如果不行,你可以使用 json 发送你的数组,然后用 php 解码(http://www.php.net/manual/en/function.json-decode.php

    如 JSON 网站上所写: stringifier 方法可以采用可选的替换函数。它将在结构中每个值的 toJSON 方法(如果有)之后调用。它将每个键和值作为参数传递,这将绑定到持有该键的对象。返回的值将被字符串化。

    在 JSON 中没有表示的值(例如函数和未定义)被排除在外。

    无限数被替换为空。要替换其他值,您可以使用如下替换函数:

    function replacer(key, value) {
        if (typeof value === 'number' && !isFinite(value)) {
            return String(value);
        }
        return value;
    }
    

    完整页面可以在这里找到:http://www.json.org/js.html

    【讨论】:

      【解决方案3】:

      你总是可以像这样序列化数组:

      books: $.param(books)
      

      其工作原理如下:

      $.param({a: [1, 2]}) // output: "a=1&a=2"
      

      【讨论】:

        【解决方案4】:

        我还是很新,也许这种方法不是最安全的,但你总是可以把你的 javascript 数组变成一个字符串,然后通过 php 的 URL 将它传递给 GET。

        所以:

        for(var i=0;i < jsarray.length;i++) 
        {
            var x = jsarray[i];
            urlstring += "myvalue[]="+x+"&";
        }
        
         document.location.href = "mypage.php?"+urlstring;
        

        然后 php 将是:

        $phparray = $_GET['myvalue'];
        

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 2012-12-14
          • 2017-06-17
          • 1970-01-01
          • 1970-01-01
          • 2014-01-08
          • 1970-01-01
          • 1970-01-01
          • 2013-03-29
          相关资源
          最近更新 更多