【问题标题】:How to pass Array from Javascript to PHP如何将数组从 Javascript 传递到 PHP
【发布时间】:2013-02-28 13:58:50
【问题描述】:

我有一个函数,每次单击按钮时都会保存一个数组到 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

【问题讨论】:

  • 为什么不向服务器发布一个帖子,然后用它来呈现新页面?
  • 使用 AJAX 将数据发布到 PHP 脚本。
  • 如果您正在更改页面,那么您可以简单地将数据发布到服务器并呈现新页面。如果您想留在同一页面上并仍然将数据发布到服务器,那么最好的选择是使用 ajax。
  • @NicholasPickering 你能举个例子吗?因为我对 javascript 和 AJAX 很陌生
  • 你需要学习AJAX才能做你想做的事:w3schools.com/ajax/default.asp

标签: php javascript html


【解决方案1】:
  1. 调用JSON.stringify(oldItems);创建json字符串

  2. 使用 AJAX 执行 POST 请求。

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

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

【讨论】:

  • 如何在我的 .js 文件中声明 JQuery(抱歉之前从未使用过!)
  • Download it here 并将其包含在您的 html 文件中。
  • 谢谢,我现在就试试看 =] P.S JSON.stringify 我放在 js 文件和 $.post 我放在我的 html 文件中?
  • 如果您不想自己下载和托管它,您可以使用 Google CDN。将 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 放在 html 文件的头部。
  • 不,一切都是javascript。我已经在代码示例中嵌入了JSON.stringify
【解决方案2】:

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

  1. 对其进行 JSon 编码
  2. 向 PHP 发出 AJAX 或 POST 请求
  3. 将传入的数组解析成PHP数组

如果你使用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的信息供参考。

【讨论】:

  • 我在哪里声明这些东西在我希望它出现的 js 文件或 php 文件中? (我对所有这些东西都是新手)
  • $.ajax 转到 javascript 文件。 $parsed_array = json_decode($_POST['items']); - 指向将响应您在 $.ajax 调用中设置的 url 的文件。花点时间了解 AJAX,它并不像看起来那么难。
  • 嘿,伙计,我刚刚尝试过,但我得到了一个未定义的索引...有什么想法吗?
  • 用你使用的代码和你得到的错误更新答案。我没有精神力量,你知道的:)
  • 更新:我已经阅读了控制台日志,它说 json_decode() 期望参数 1 是字符串,给定数组
【解决方案3】:

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

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

【讨论】:

  • 我对 AJAX 和 JQuery 很陌生,不知道如何在 .js 文件中声明它
猜你喜欢
  • 1970-01-01
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多