2013-05-03 60 views
0

我刚开始学习JSON来自其他网站的教程使用此代码(我已经修改,以简化此):

$(document).ready(function(){ 
    $('#getdata-button').click(function(){ 
     $.ajax({ 
      type: "GET", 
      url: "json-data.php", 
      dataType: "json", 
      success: function(){ 
       alert('a'); 
       $('#showdata').html(
        "<p>item1="+data.item1+ 
        " item2="+data.item2+ 
        " item3="+data.item3+"</p>" 
       ); 
      } 
     }); 
    }); 
}); 

这是代码JSON-data.php

<?php 
    $item1 = "candy"; 
    $item2 = "chocolate"; 
    $item3 = "ice cream"; 

    //return in JSON format 
    echo "{"; 
    echo "item1: ", json_encode($item1), "\n"; 
    echo "item2: ", json_encode($item2), "\n"; 
    echo "item3: ", json_encode($item3), "\n"; 
    echo "}"; 
?> 

的问题是,我已经点击了按钮(带“的GetData按钮”的ID)后(用于调试)提示功能不会响应。 Firebug说这个请求是成功的,我可以从那里看到数据。没有发现错误。这只是回调函数没有执行,但为什么?

+2

你的JSON无效。键和字符串值必须用双引号括起来,'json_encode()'不能用于JSON字符串中,它意味着输出一个完整的JSON字符串。 – 2013-05-03 15:39:38

+4

Gah!不要这样做!你应该在PHP中构建一个数组,然后只是'echo json_encode($ array)' – Bojangles 2013-05-03 15:41:19

+0

我觉得http://jsonlint.com非常有帮助。你也应该利用ajax的“错误”回调。 http://www.json.org也适用于理论和语法。 – dgig 2013-05-03 15:42:34

回答

2

您需要正确输出您的JSON。用下面的替换你的PHP

$items = array(
    'item1' => $item1, 
    'item2' => $item2, 
    'item3' => $item3 
); 
header('Content-type: application/json'); 
echo json_encode($items); 
+3

它应该是'application/json'。 http://stackoverflow.com/a/477819 – 2013-05-03 15:48:29

+0

D'Oh!当然应该。谢谢(并编辑为未来) – fullybaked 2013-05-03 15:54:12

+0

@fulbaked谢谢,这完美的作品。但是,标题确实是强制性的? – Arman 2013-05-03 15:54:43