1

我目前收到一个 json 响应,即:

[{"id":1,"title":"Test 1 "},{"id":2,"title":"Test 2"}]

我想将它转换为一个名为'events'的javascript数组,如下所示,以便我可以返回它:例如:

  return {
     events : [
        {
           "id":1,
           "title":"Test 1"
        },
        {
           "id":2,
           "title":"Test 2"
        }
     ]
  };

我从 jquery ajax 调用中得到响应:

    jQuery.ajax({
        type: "POST",
        url: "calendar.aspx/get_all_events",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            document.write(msg.d);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert('Error getting events from database.');
        }
    });

任何人都知道如何将 msg 或 msg.d 转换为需要的内容?

谢谢,

4

4 回答 4

2

您可以使用:

return {events: JSON.parse(msg.d)};

或者,为了更好的兼容性:

eval("var result = "+msg.d);
return {events: result};

或 jQuery 解决方案

return {events: $.parseJSON(msg.d)};
于 2012-12-15T13:56:43.160 回答
0

我想你只需要这个:

    success: function (msg) {
        // The event object is what you require
        var eventObj = {events:msg.d};
        document.write(eventObj);
    },
于 2012-12-15T13:33:22.773 回答
0

如果 msd.d 是

 [{"id":1,"title":"Test 1 "},{"id":2,"title":"Test 2"}] 

那么你可以像这样返回它:

return {
     events : msg.d
  };

但是您必须进行回调才能返回它。因为ajax是异步的。我添加了退货,因为那是您想要的。另一种方法是使 ajax 调用同步。

于 2012-12-15T13:34:03.957 回答
0
function doXHR( callback ) {
   jQuery.ajax( {
        type: "POST",
        url: "calendar.aspx/get_all_events",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function ( event ) {
            callback && callback( event );
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert('Error getting events from database.');
        }
    });
}

doXHR( function( event ) {
    var data = { events: event.d };
    // Do other stuff with data here (processing, displaying, etc.).
    // You can call other functions here and feed them with data.
} );

请注意,XHR 请求是异步的。您不能简单地返回 XHR 请求数据。您必须将所有进一步的代码放入回调函数中,以便它可以在可用时处理您的数组。

于 2012-12-15T14:09:01.553 回答