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文件。
答案 0 :(得分:3)
您在客户端执行 GET 请求:
type: "GET",
但您希望服务器端的 POST 数据:
$_POST['data']
(这个答案不再适用,因为OP编辑了这个问题。)
答案 1 :(得分:1)
你怎么说它根本不起作用,检查你的ajax函数,你应该有一个成功的处理程序,
$('#btn').click(function(){
$.ajax({
type: "GET",
url: "json.php",
data: {data:json},
success:function(data){
alert(data);
}
});
});
否则你怎么知道ajax是否发生了?
答案 2 :(得分: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
});
});
您正在阅读PHP中的$_POST['data']
,因此您需要将数据发送为POST
这有一个额外的好处,在PHP中你的$_POST['data']
将是一个数组!不需要json_decode
。