通过 jQuery $.ajax 将 JavaScript 数组传递给 PHP

IT技术 php javascript jquery ajax
2021-02-09 19:42:04

我想在 PHP 中操作 JavaScript 数组。有可能做这样的事情吗?

$.ajax({
       type: "POST",
       url: "tourFinderFunctions.php",
       data: "activitiesArray="+activities,
       success: function() {
            $("#lengthQuestion").fadeOut('slow');
       }
    });

活动是一个一维数组,如:

var activities = ['Location Zero', 'Location One', 'Location Two'];

尝试此操作时脚本未完成...我该如何解决?

6个回答
data: { activitiesArray: activities },

而已!现在您可以在 PHP 中访问它:

<?php $myArray = $_REQUEST['activitiesArray']; ?>
像黑客一样简单!做得好!你让我嘲笑自己:D。
2021-03-23 19:42:04
为什么这个答案这么难找!?谢谢,这正是我需要的。
2021-04-11 19:42:04

您需要在发送数组之前将其编码为 JSON,否则您只会在另一端得到一些垃圾。

由于您发送的只是数组,因此您可以执行以下操作:

data: { activities: activities }

这将自动为您转换数组。

有关详细信息,请参见此处

你需要把它变成一个字符串。您可以使用 JSON2 库中的 stringify 方法执行此操作。

http://www.json.org/

http://www.json.org/js.html

代码如下所示:

var myJSONText = JSON.stringify(myObject);

所以

['Location Zero', 'Location One', 'Location Two'];

会变成:

"['Location Zero', 'Location One', 'Location Two']"

您必须参考 PHP 专家来了解如何在服务器上处理此问题。我认为这里的其他答案暗示了一个解决方案。

可以以类似的方式从服务器返回数据。即你可以把它变回一个对象。

var myObject = JSON.parse(myJSONString);

我知道现在回答这个问题可能为时已晚,但这对我很有用:

  1. 使用字符串化您的 javascript 对象 (json) var st = JSON.stringify(your_object);

  2. 将您的 POST 数据作为“字符串”传递(也许使用 jQuery: $.post('foo.php',{data:st},function(data){... });

  3. 在服务器端处理中解码您的数据: $data = json_decode($_POST['data']);

就是这样……您可以自由使用您的数据。

多维数组和单数组作为普通数组处理。要访问它们,只需执行正常的$foo[4].

关联数组(javsacript 对象)作为 php 对象(类)处理。要访问它们就像类一样:$foo->bar.

我应该是这样的:

$.post(submitAddress, { 'yourArrayName' : javaScriptArrayToSubmitToServer },
  function(response, status, xhr) {
    alert("POST returned: \n" + response + "\n\n");
  })