使用简单的JSON Hello World应用程序时遇到问题

我正在尝试学习如何编写更多使用Ajax的动态网站。 我发现的示例似乎只向服务器传递一个字符串参数。 再看一下之后,我看到一些开发人员通过创建一个对象然后使用JSON序列化对象来传递多个值。

所以,我想创建一个简单的HelloWorld应用程序,它在两个方向上传递对象。 例如,服务将.NET对象序列化为JSOn并将其传递回浏览器以通过Javascript进行解析,还有一个示例,其中Javascript对象在客户端被序列化为JSON,然后反序列化为.NET对象在服务器上。 为了将Javascript对象序列化为JSON,我在json.org找到了一个javascript例程json.js,

我的简单示例包含以下包含文件:

   

第三个是我自己的js文件,其中包含以下代码:

 function CallHandler() { $.ajax({ url: "Handlers/Handler1.ashx", contentType: "application/json; charset=utf-8", dataType: "json", data: { 'Id': '101', 'Name': 'Chad' }, responseType: "json", success: OnComplete, error: OnFail }); return false; } function CallHandler2() { var EmployeeSerialized = JSON.stringify(GetInput()); $.ajax({ url: "Handlers/Handler2.ashx", contentType: "application/json; charset=utf-8", dataType: "json", data: EmployeeSerialized, responseType: "json", success: OnComplete2, error: OnFail }); return false; } function GetInput() { var emp = new Object(); emp.Name = 'Brij'; emp.Age = '27'; return emp; } function OnComplete(result) { alert(result.ID + ' ' + result.Name + ' ' + result.Age + ' ' + result.Timestring); } function OnComplete2(result) { alert("Complete2"); } function OnFail(result) { alert('Ajax failed' + result); } 

从以下网页调用:

           

我的问题是我不能让两个按钮事件同时工作。 例如,当应用程序立即生效时,如果我包含所有3个INCLUDE语句,则只有Callhandler2事件成功调用其服务器端Httphandler。 但是,如果我注释掉json.js INCLUDe文件,第一个工作,但第二个工作正常。 显然,第二个会中断,因为它需要在删除的js文件中找到的Stringify函数。 问题是,为什么包含json.js文件会破坏Callhandler2事件? 必定会有某种冲突。

考虑到我应该尝试最新版本的jQuery lib,我尝试包含版本1.6.2,但是,当推送CallHandler2按钮时,这只引入了之前没有发生的旧jQuery库的JSON解析错误。

我发现与使用服务器端开发的经验相比,使用Javascript非常令人沮丧,原因很多,包括缺少良好的错误消息。 在这种情况下,我没有错误消息,function只是中断。

由于我认为你也很难找到错误,我发布了我的代码。 这是我的小型Visual Studio 2010 项目 。 如果您下载我的项目,则可能必须重置文件上的只读标志(如果要修改它们)。 对于那个很抱歉。

更新:

我看到错误发生在json.js的第554行:

 // If the text is not JSON parseable, then a SyntaxError is thrown. throw new SyntaxError('JSON.parse'); 

我看到变量EmployeeSerialized的计算结果为

 {"Name":"Brij","Age":"27"} 

然后当我尝试将EmployeeSerialized JSON字符串值作为数据传递给Handler2 HttpHandler时,Callhandler2函数中的ajax调用以及以下错误消失。

 SCRIPT5022: Exception thrown and not caught json.js, line 554 character 13 

这个JSON字符串有什么问题?

它不是你的代码,与json.js和jquery存在冲突。 使用来自https://github.com/douglascrockford/JSON-js的 json2.js文件,事情应该会好得多。

请参阅Json JQuery冲突以获得类似/相同问题的答案