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

krx*_*krx 77 javascript php ajax jquery

我想在PHP中操作JavaScript数组.可以这样做吗?

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

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

var activities = ['Location Zero', 'Location One', 'Location Two'];
Run Code Online (Sandbox Code Playgroud)

我尝试这个时脚本没有完成...我该如何解决?

Val*_*lev 145

data: { activitiesArray: activities },
Run Code Online (Sandbox Code Playgroud)

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

<?php $myArray = $_REQUEST['activitiesArray']; ?>
Run Code Online (Sandbox Code Playgroud)

  • 为什么这个答案很难找到!?谢谢,这正是我所需要的. (10认同)

jve*_*ema 12

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

由于你发送的只是数组,你可以这样做:

data: { activities: activities }
Run Code Online (Sandbox Code Playgroud)

这将自动为您转换数组.

详情请见此处.


Jam*_*man 10

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

http://www.json.org/

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

代码看起来像:

var myJSONText = JSON.stringify(myObject);
Run Code Online (Sandbox Code Playgroud)

所以

['Location Zero', 'Location One', 'Location Two'];
Run Code Online (Sandbox Code Playgroud)

会变成:

"['Location Zero', 'Location One', 'Location Two']"
Run Code Online (Sandbox Code Playgroud)

您将不得不向PHP大师询问如何在服务器上处理此问题.我认为其他答案在这里是一个解决方案.

可以以类似的方式从服务器返回数据.即你可以把它变回一个物体.

var myObject = JSON.parse(myJSONString);
Run Code Online (Sandbox Code Playgroud)


lu1*_*u1s 9

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

  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.