我有一个返回json的函数(networks_function.php构建了一些数组并将它们编码为json):
var json;
$(document).ready(function(){
$.post("network_function.php", function(data) {
json = data;
alert(json);
});
});
我将json变量传递给一个不能正确解释的新函数。但是,当我复制alert语句的文本并将其硬编码到第二个函数中(并将其设置为等于json变量)时,它可以工作。我确信这不是可变范围的问题。有人知道为什么会这样吗?
答案 0 :(得分:0)
它认为这不是JSON。告诉jQuery它是JSON数据:
var json;
$(document).ready(function(){
$.post("network_function.php", function(data) {
json = data;
alert(json);
}, "json");
});
复制和粘贴它的原因是因为粘贴到JS上下文中的JSON字符串是一个对象文字。当您警告实际对象(这是您想要提醒的对象)时,您将看到“对象”,可能还有一些调试信息,具体取决于浏览器。
请注意,您可以(也应该)在PHP文件中发送json标头
header("Content-Type: application/json");
答案 1 :(得分:0)
我看到你在后端使用php。 你可能想这样做:
后端:
$dataToSend = array("item1"=>"data1","item2"=>"data2");
echo json_encode($dataToSend);
然后,您可以将jQuery中的“数据”作为JSON对象获取。 如果php将其作为字符串返回 只是做:
json = JSON.parse(data);
你的php大多没有正确返回json,所以回显你的字符串周围的引号可能是个问题。返回JSON时在php中使用正确的引号会很麻烦,因此对数组使用json_encode()将是最简单的方法。