如何将数组从Javascript传递给PHP

时间:2013-03-12 20:40:10

标签: php javascript html5

我有一个函数,每次单击按钮到localStorage时都会保存一个数组。按钮将被多次单击,我需要将这个数组列表以某种方式放入PHP中,这个文件位于该文件的另一页上。

谢谢

a.js (此函数侦听页面的onLoad)

    function doFirst(){
    var button = document.getElementById("button");
    button.addEventListener("click", save, false);

    var buttons = document.getElementById("clear");
    buttons.addEventListener("click", clear, false);

    var buttonss = document.getElementById("submittodb");
    buttonss.addEventListener("click", toPHP, false);

        $.ajax({
            method: 'post',
            dataType: 'json',
            url: 'edit.php',
            data: { items: oldItems }, //NOTE THIS LINE, it's QUITE important
            success: function() {//some code to handle successful upload, if needed
            }
        });

        }

        function save(){

        var oldItems = JSON.parse(localStorage.getItem('itemsArray')) || [];

        var newItem = {
           'num': document.getElementById("num").value,
            'methv': document.getElementById("methv").value,
            'q1': document.getElementById("q1").value,
            'q2':document.getElementById("q2").value,
            'q3':document.getElementById("q3").value,
            'q4':document.getElementById("q4").value,
            'comm':document.getElementById("comm").value,

        };
        oldItems.push(newItem);

        localStorage.setItem('itemsArray', JSON.stringify(oldItems));}


edit.php


$parsed_array = json_decode($_POST['items']);

and i get the error: Notice: Undefined index: items in /home/project/edit.php on line 9

3 个答案:

答案 0 :(得分:4)

为了将此数组传递给PHP,您需要:

  1. JSon-encode it
  2. 向PHP发出AJAX或POST请求
  3. 将传递的数组解析为PHP数组
  4. 如果你正在使用jQuery(如果你不是你应该开始 - 这是非常方便的工具)步骤(1)和(2)就像

    一样简单
    $.ajax({
        method: 'post',
        dataType: 'json',
        url: 'the URL of PHP page that will handle the request',
        data: { items: oldItems }, //NOTE THIS LINE, it's QUITE important
        success: function() {//some code to handle successful upload, if needed
        }
    });
    

    在PHP中,您可以使用

    解析传递的数组
    $parsed_array = json_decode($_POST['items']);
    

    { items: oldItems }$_POST['items']之间存在直接关联。您在javascript调用中为参数指定的变量名称将是$_POST数组中最后一个键的名称。因此,如果您只是在javascript中使用data: oldItems,那么您的所有实体都会分散在$_POST数组周围。

    更多关于$.ajaxjson_decode以供参考。

答案 1 :(得分:0)

您可以创建一个AJAX函数(使用jQuery)并将JSON数据发送到服务器,然后使用PHP函数/方法对其进行管理。

基本上,您需要将数据从客户端(浏览器)发送回数据库托管的服务器。

答案 2 :(得分:0)

  1. 调用JSON.stringify(oldItems);创建json字符串

  2. 使用AJAX执行POST请求。

  3. 可能最简单的方法是使用jQuery:

    $.post('http://server.com/url.php', { items: JSON.stringify(oldItems) }, function(response) {
      // it worked.
    });