我想将JSON使用$.ajax序列化的字符串传递给一个外部php文件,该文件将被分配给一个常规数组。
以下是到目前为止我得到的,它没有显示taskContent数组的第0个索引。
JQuery代码:
$(".json").click(function() {
var allTaskArr = [];
$('#appendTask .taskbox').each(function(index,domEle){
//domEle == this
allTaskArr[index] = $(domEle).val();
});
var allTaskStr = '{"taskContent":'+JSON.stringify(allTaskArr)+'}';
$.ajax({
url:'testjson.php',
type:"POST",
datatype:'json',
data:allTaskStr
});
});
PHP文件:
$jsonContent = $_POST['taskContent'];
$taskContent = json_decode($jsonContent,true);
echo $taskContent[0];
你说:
@Spudley我收到"未定义的索引:taskContent"消息。
原因是PHP没有接收到名为tastContent
的后变量。
原因是您没有正确发送JSON。
在jQuery代码中,您将生成一个JSON字符串,然后将其放入ajax调用的data
元素中。事实上,data
元素应该被赋予一个对象,而不是json字符串;它将其编码为json本身,因此如果您首先给它json,PHP程序将收到一个双重编码的字符串,即一个json字符串,它将解码为另一个json字符串。
因此,取而代之的是:
var allTaskStr = '{"taskContent":'+JSON.stringify(allTaskArr)+'}';
您需要将数据作为一个对象发送,如下所示:
var allTask = {taskContent:allTaskArr};
或者直接将其放入ajax调用:
data : {taskContent:allTaskArr}
希望这能帮助你走上正轨,并解释问题所在。
在编辑之前忽略此帖子。
这是你的问题:
var allTaskStr = '{"taskContent":'+JSON.stringify(allTaskArr)+'}';
应为:
var allTaskStr = {"taskContent":JSON.stringify(allTaskArr)};
data:,需要一个对象,而您正在向它发送一个字符串。