- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习如何使用 Ajax 编写更加动态的网站。我发现的示例似乎只向服务传递一个字符串参数或从服务传递一个字符串参数。经过一番观察,我发现一些开发人员通过创建一个对象然后使用 JSON 序列化该对象来传递多个值。
因此,我想创建一个简单的 HelloWorld 应用程序,可以双向传递对象。例如,服务将 .NET 对象序列化为 JSOn 并将其传回浏览器以供 Javascript 解析,还有一个示例是 Javascript 对象在客户端序列化为 JSON,然后反序列化为 .NET 对象在服务器上。为了将 Javascript 对象序列化为 JSON,我在 json.org 找到了一个 javascript 例程 json.js,
我的简单示例包含以下包含文件:
<script language="javascript" type="text/javascript" src="Scripts/jquery-1.4.1.js"></script>
<script language="javascript" type="text/javascript" src="Scripts/json.js"></script>
<script language="javascript" type="text/javascript" src="Scripts/script.js"></script>
第三个是我自己的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);
}
它是从以下网页调用的:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication2.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript" src="Scripts/jquery-1.4.1.js"></script>
<script language="javascript" type="text/javascript" src="Scripts/json.js"></script>
<script language="javascript" type="text/javascript" src="Scripts/script.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="CallHandler" OnClientClick="CallHandler();" />
<asp:Button ID="Button2" runat="server" Text="CallHandler2" OnClientClick="CallHandler2();" />
</div>
</form>
</body>
</html>
我的问题是我无法让两个按钮事件同时工作。例如,就应用程序现在而言,如果我包含所有 3 个 INCLUDE 语句,则只有 Callhandler2 事件成功调用其服务器端 Httphandler。但是,如果我注释掉 json.js INCLUDe 文件,第一个文件可以工作,但第二个文件会中断。显然,第二个中断,因为它需要在删除的 js 文件中找到的 Stringify 函数。问题是,为什么包含 json.js 文件会破坏 Callhandler2 事件?一定存在某种冲突。
我认为我应该尝试最新版本的 jQuery 库,因此尝试包含版本 1.6.2,但是,当按下 CallHandler2 按钮时,这只会引入旧版 jQuery 库的 JSON 解析错误,而旧版 jQuery 库并没有这样做。发生在之前。
与我在服务器端开发的经验相比,我发现使用 Javascript 非常令人沮丧,原因有很多,包括缺乏良好的错误消息。在这种情况下,我没有错误消息,功能只是中断。
由于我认为您也可能很难找到错误,因此我发布了我的代码。这是我的小型 Visual Studio 2010 project 。如果您下载我的项目,并且想要修改文件,则可能必须重置文件上的只读标志。对于那个很抱歉。
更新:
我发现错误出现在 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 conflict类似/相同问题的答案
关于jquery - 使用简单的 JSON Hello World 应用程序时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8252274/
我的 CS2 讲师给出了一个 java 正则表达式,用于检查单词是否重复: \\b(\\w+)\\s+\\1\\b 如何修改它来检查某个单词是否重复两次,如“hello hello hello”或“h
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
这个问题已经有答案了: printf anomaly after "fork()" (3 个回答) 已关闭 3 年前。 #include #include Void main() { Printf
我一直在分配以下作业来解释 3 个语句中发生的事情,但我无法弄清楚。 cout << ("hello" + 1); // ello cout << (*"hello") + 1; // 10
如何确定用户是否使用 hello.js 登录? 使用 Google Sign-In SDK,我可以使用 gapi.auth2.init() 注册回调,当设置 SDK 并准备好回答诸如“你是登录了吗?”
执行String S1 = "hello";后,JVM将在SCP中创建一个String对象,该对象将在value字段中保存一个字符数组,如 s1.value = {'h', 'e', 'l', 'l'
我正在 build gomobile Hello示例应用程序,但遇到以下问题:在 Xcode (7.1) 中打开应用程序后尝试构建并运行该应用程序时,出现错误“找不到 hello/Hello.h”文件
#coding=utf-8 '''Tkinter module''' from Tkinter import * import time root=Tk() t=Text(root,fg='red')
在C/C++中,下面两行代码有什么区别: char *str1="hello"; char *str2={"hello"}; 最佳答案 根据 2011 C 标准,条款 6.7.9 初始化,第 11
我对在 android studio 中导入 import.hello.Hello 时出错有疑问,如下图所示。请给我解决方案如何解决这个错误 最佳答案 请参阅此处 @Arpit Patel answe
hello/ 忽略文件夹结构中任何位置名为“hello”的所有文件夹 hello/* 仅忽略顶级文件夹“hello”。 这是为什么?请指出http://git-scm.com/docs/gitigno
请解释以下程序中发生了什么。 我在程序的开头和结尾检查了 strerror(errno) 返回的地址,并确认它每次都返回相同的地址。然后一旦确定这一点,在第一种情况下我继续将相同的地址分配给 ptr,
在整个互联网上你都会看到这个命令 alias hello='echo Hello' 是的,我知道以上是一个蹩脚的例子,但它不是重点。如果我执行它,它就会起作用。但是当我重新启动计算机时,它丢失了。为什
我正在学习 C++ 指针,而 -> 运算符对我来说似乎很奇怪。代替ptr->hello(); 可以写成 (*ptr).hello(); 因为它似乎也可以工作,所以我认为前者只是更方便方式。 是这样还是
这个问题在这里已经有了答案: About the changing id of an immutable string (5 个回答) 关闭4年前。 为什么 "hello"is "hello" 在 P
我需要Prolog的源代码,它用于与Weka连接,并且能够在Windows环境下使用Weka算法进行预测。我尝试通过 Java 连接,但无法使用 Java 和 Prolog 进行连接和预测。 最佳答案
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: Capitalize First Char of Each Word in a String Java 编写进行以下
当我在 ruby 控制台中运行以下示例时,我感到很惊讶。它们都产生相同的输出。 "hello".length 和 "hello" .length ruby
我创建了一个Hello World应用,系统生成了下面大部分的Android语言。在没有 System.out 语句的情况下运行应用程序时,模拟器中不会显示“Hello”。然后,使用 Eclipse
是的,所以我正在制作一个沼泽标准 Hello world 以确保 android 正常工作。这是我第一次使用 android,所以我正在设置环境。我按照以下程序制作了程序:http://develop
我是一名优秀的程序员,十分优秀!