如何在javascript中使用Json字符串

时间:2010-06-22 18:27:45

标签: jquery ajax

我有一个功能

 var url = "MyAvailability.aspx?mode=get";

        $.get(url,
        function(data) {
            alert(data);
        });

返回Json字符串表示

events: [{'id': 1,'start': new Date(year, month, day, 12),'end': new Date(year, month, day, 13, 30),'title': 'Lunch with Mike'},{'id': 2,'start': new Date(year, month, day, 14),'end': new Date(year, month, day, 14, 45),'title': 'Dev Meeting'},{'id': 3,'start': new Date(year, month, day + 1, 17),'end': new Date(year, month, day + 1, 17, 45),'title': 'Hair cut'},{'id': 4,'start': new Date(year, month, day - 1, 8),'end': new Date(year, month, day - 1, 9, 30),'title': 'Team breakfast'},{'id': 5,'start': new Date(year, month, day + 1, 14),'end': new Date(year, month, day + 1, 15),'title': 'Product showcase'},{'id': 6,'start': new Date(year, month, day, 10),'end': new Date(year, month, day, 11),'title': 'I'm read-only',readOnly: true'}]';

If i do alert(data);

它有效,但如果我试图将数据分配给变量,则失败。

我的目标是从函数返回类似

 return {
        events: [
        {
            "id": 1,
            "start": new Date(year, month, day, 12),
            "end": new Date(year, month, day, 13, 30),
            "title": "Lunch with Mike"
        },
        {
            "id": 2,
            "start": new Date(year, month, day, 14),
            "end": new Date(year, month, day, 14, 45),
            "title": "Dev Meeting"
        },
        {
            "id": 3,
            "start": new Date(year, month, day + 1, 17),
            "end": new Date(year, month, day + 1, 17, 45),
            "title": "Hair cut"
        },
        {
            "id": 4,
            "start": new Date(year, month, day - 1, 8),
            "end": new Date(year, month, day - 1, 9, 30),
            "title": "Team breakfast"
        },
        {
            "id": 5,
            "start": new Date(year, month, day + 1, 14),
            "end": new Date(year, month, day + 1, 15),
            "title": "Product showcase"
        },
        {
            "id": 6,
            "start": new Date(year, month, day, 10),
            "end": new Date(year, month, day, 11),
            "title": "I'm read-only",
            readOnly: true
        }
    ]
    };

但我无法

如果我确实返回数据不起作用

你能不能帮助我,我正在疯狂这个

3 个答案:

答案 0 :(得分:3)

您似乎错过了.get调用中数据格式的规范。 请尝试这个:

$.get(url,
function(data) {
    alert(data);
},"json");

或考虑使用jquery中的.getJSON方法

答案 1 :(得分:1)

你的问题不太清楚,只是说“失败”或“它不起作用”并没有多大帮助。但是,如果您要向浏览器返回json响应,则应该:

  1. 使用$.getJSON方法代替$.get,或

  2. $.get请求的数据类型设置为“json”。

  3. 如果您不执行上述任何一项操作,则需要通过执行以下操作手动将返回的字符串解析为对象:

    var myObj = eval('(' + data + ')');
    

    其中data变量包含返回的json字符串。

答案 2 :(得分:0)

问题不在于return语句,实际上是因为它所在的函数被称为异步。因此,如果您将$.get()调用放在函数中,那么该函数将在之前返回调用回调函数。

不要使用返回值,而是让函数本身完成工作(或调用其他函数来完成工作)。