如何通过JQuery Post传递一个Javascript数组,以便所有内容都能够通过PHP $_POST数组进行访问?

42
如何通过JQuery Post传递Javascript数组,以便通过PHP $_POST数组访问其所有内容?
请给出一个能实现此目的的代码示例。
谢谢!
4个回答

64

如果你想传递一个 JavaScript 对象/哈希表(即 PHP 中的关联数组),那么你可以这样做:

$.post('/url/to/page', {'key1': 'value', 'key2': 'value'});

如果您想传递一个真正的数组(即PHP中的索引数组),那么可以这样做:

$.post('/url/to/page', {'someKeyName': ['value','value']});

如果你想传递一个JavaScript数组,那么可以这样做:

$.post('/url/to/page', {'someKeyName': variableName});

25

这很简单。在你的JS中,你只需要执行如下代码或类似代码:

var array = ["thing1", "thing2", "thing3"];

var parameters = {
  "array1[]": array,
  ...
};

$.post(
  'your/page.php',
  parameters
)
.done(function(data, statusText) {
    // This block is optional, fires when the ajax call is complete
});

在您的php页面中,以数组形式获取的值将通过$_POST ['array1']可用。

参考资料


8

这里有一个例子:

$.post("test.php", { 'choices[]': ["Jon", "Susan"] });

希望这可以帮到你。

1
但是如果数组在Javascript变量中呢? - PleaseHelpMe
6
var choices = ["Jon", "Susan"]; $.post("test.php", { 'choices[]': choices }); (翻译:将选项变量设置为包含“Jon”和“Susan”的数组,然后使用jQuery中的POST方法将该数组作为参数传递给指向“test.php”的URL。) - Rui
@Rui,为什么choices[]周围有单引号?在JS或jQuery权威网站上有关于此规则的说明吗? - Istiaque Ahmed
当我发送 var choiseArr=[];choiseArr=[0]='Jon'; choiseArr=[1]='Susan'; $.post("test.php", { 'choices': choiseArr }); 时,它会发送请求,但不是作为数组而是两次作为“choices”。所以我只得到了 Susan 的值。你的答案帮了我大忙,节省了很多时间。谢谢... :) - Ravikumar Sharma

1

我认为我们应该使用这种格式发送

var array = [1, 2, 3, 4, 5];
$.post('/controller/MyAction', $.param({ data: array }, true), function(data) {});

已经在通过AJAX将数组传递给MVC Action中提到。

这对我起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接