2

html

<button id="btn2">show alert array</button>
<button id="btn"> go to php</button>

javascript

var test = new Array();
test.push("one");
test.push("two");
json = JSON.stringify(test);

$('#btn').click(function(){
$.ajax({
type: "POST",
url: "json.php",
data: {data:json}
});
});

$('#btn2').click(function(){
alert(json);
});

php 文件 (json.php)

<?php
$data = json_decode($_POST['data']);
var_dump($data);
?>

id="btn2" 正在工作。它显示一个带有数组的警报,但是当我单击 id="btn" 时,它根本不起作用。你能告诉我这些代码的问题吗?我只想将一个数组从 javascript 发送到 php 文件。

4

3 回答 3

3

您在客户端执行GET请求:

type: "GET",

但是您希望在服务器端发布POST数据:

$_POST['data']

(这个答案不再正确,因为 OP 编辑​​了这个问题。)

于 2013-10-18T16:20:24.913 回答
1

你怎么说它根本不起作用,检查你的ajax函数,你应该有一个成功的处理程序,

$('#btn').click(function(){
$.ajax({
type: "GET",
url: "json.php",
data: {data:json},
success:function(data){
alert(data);
}
});
});

否则你怎么知道ajax是否发生了?

于 2013-10-18T16:22:50.607 回答
0

不是将数组从 JavaScript 发送到 PHP 的正确方法。这里不需要 JSON。您可以在 AJAX 调用中发送数组。它将被正确序列化:

$('#btn').click(function(){
    $.ajax({
        type: "POST",  // Make sure to read from the right array in PHP
        url: "json.php",
        data: {data: test} // test is your array, no JSON.stringify needed
    });
});

您正在阅读$_POST['data']PHP,因此您需要将数据发送为POST

这有一个额外的好处,那就是在 PHP 中你$_POST['data']将是一个数组!不需要json_decode

于 2013-10-18T16:22:53.760 回答