传递Javascript数组 - > PHP

swi*_*itz 61 javascript php arrays jquery

假设我有一个包含大量元素的javascript数组(从50到200).

我想使用ajax将它发送到PHP(预备语句).目前,我.load在循环内多次使用php文件,但我想将其转换为数组并发送一次数组,加载PHP文件一次而不是50-200次.

array[i] = variable;

Gar*_*eth 105

您可以使用JSON.stringify(array)JavaScript对数组进行编码,然后$array=json_decode($_POST['jsondata']);在PHP脚本中使用它来检索它.

  • 不要忘记消毒你的输入,或者你敬酒!:d (17认同)
  • 您应该假设您的PHP脚本的任何输入都可能被具有恶意意图的人泄露.通过`mysql_real_escape_string()`运行您计划放入数据库查询的任何变量,以及将通过`htmlentities()放到屏幕上的任何内容. (14认同)

Ale*_*dev 29

AJAX请求与通过<form>元素发起的GET和POST请求没有什么不同.这意味着您可以使用$ _GET和$ _POST来检索数据.

在进行AJAX请求时(jQuery示例):

// JavaScript file

elements = [1, 2, 9, 15].join(',')
$.post('/test.php', {elements: elements})
Run Code Online (Sandbox Code Playgroud)

它(几乎)相当于发布此表单:

<form action="/test.php" method="post">
  <input type="text" name="elements" value="1,2,9,15">
</form>
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,在服务器端,您都可以从$ _POST变量中读取数据:

// test.php file

$elements = $_POST['elements'];
$elements = explode(',', $elements);
Run Code Online (Sandbox Code Playgroud)

为了简单起见,我在这里用逗号加入元素.但是,JSON序列化是一种更通用的解决方案.

  • 我不知道为什么这是不被接受的答案,因为它正是OP所要求的并且导致更少的麻烦,特别是一些框架自动为你爆炸POST数组 (2认同)