JSON ajax响应中的格式错误

时间:2013-12-29 03:43:48

标签: javascript ajax json jquery

我遇到一些奇怪的问题,从jquery Ajax调用返回的数据是我无法弄清楚的。

我有一个c#asp.net网页,它在页面加载时使用客户端JavaScript将有效的JSON数据blob绑定到UI。这部分工作正常。我设置了一个jquery Ajax post back,它返回相同的数据并调用相同的JavaScript数据绑定方法,当我尝试绑定数据时会抛出一个错误。看起来写入加载页面的JSON被正确视为JSON对象,但是ajax调用返回的数据不是。

这是ajax调用:

jQuery.ajax({
type: 'POST',
data: "{'move_list': '1-2,3-2'}",
dataType: 'json',
contentType: 'application/json; charset=UTF-8', 
url: 'Puzzle.aspx/ProcessMove',
complete: OnComplete,
success: function(data){BindData(data);},
error: OnError
});

以下是正在处理的JSON数据示例:

{"game": [{"x":0,"y":0,"color":"Blue"},{"x":1,"y":0,"color":"Green"}]}

以下是首次加载页面时加载数据的代码:

<script type="text/javascript">

// method returns JSON object above.
// client side code appears like this:
// BindData({"game": [{"x":0,"y":0,"color":"Blue"},{"x":1,"y":0,"color":"Green"}]});

BindData(<%=Game.SerializeToJson()%>);  

</script>

最后,JavaScript绑定函数:

function BindData(data) 
{
    try
    {
       document.getElementById("square1").className = data.game[0].color;
        // much more of the same....
    }
    catch(exception)
    {
        alert(exception.message);
        // error thrown here is 'data.game is undefined'.
        // the data object is being treated like a string and not a JSON object.
        // so the indexing into the object fails.
    }
}

我已经使用多个在线JSON解析器仔细检查了JSON数据,并且数据格式正确。在任何一种情况下,服务器端代码都会生成相同的输出。

我尝试将jquery Ajax调用更改为...

success: function(data){BindData(JSON.parse(data));}, 

...看看它是否只是将返回的数据视为字符串而不是JSON对象,但这只是生成此消息:

SyntaxError: JSON.parse: unexpected character
BindData(JSON.parse(data));

完全被这一个难倒。我一直在阅读我能找到的所有东西并尝试各种各样的东西,但似乎没有任何效果。

0 个答案:

没有答案