用 E4X 和 Prototype 创建 Ajax mindreader 应用程序,第 2 部分: 使 mindreader 应用程序更智能化
2010-03-09 00:00:00 来源:WEB开发网还可以使用 $F() 函数简化对表单元素的访问。例如,可以把 newTarget = document.getElementById("targetForm").elements[0].value; 替换为 newTarget = $F("newTargetDisplay");。
这些函数使用 HTML 元素的 ID 属性,所以一定要在 HTML 文件中包含 ID 属性。
现在看看如何集成这个应用程序和后端数据库。
请求知识库
使用 Prototype 的 Ajax.Request 对象请求知识库。可以使用这个对象发送 HTTP 请求并根据结果调用一个新函数。在这个示例中,希望请求一个代表知识库的 XML 字符串,然后使用这个字符串创建一个 XML 对象,见清单 10。
清单 10. 在 e4x.js 中请求知识库
function get_knowledge_base(){
new Ajax.Request("knowledgebase.php",
{method: "get",
parameters: {getkb: 'YES'},
onSuccess: function(transport){
kstring = transport.responseText;
knowledgeBase = new XML(kstring);
start_over();
}
})
}
在创建新的 Ajax.Request 对象时,要传递许多数据。首先,要提供 HTTP 请求的 URL。可以指定主机名,但是一般来说 Ajax 请求必须来自与发出请求的页面相同的服务器和端口,所以我们只使用相对 URL。
还需要指定希望使用 GET 方法,并指定一个值为 YES 的 getkb 参数。可以使用 parameters 参数设置多个值,稍后将会见到。
这个函数最重要的部分可能是 onSuccess 处理函数,它告诉对象在请求成功时应该做什么。Prototype 定义了 7 个不同的处理函数,所以可以处理几乎任何情况。当请求成功时,脚本提取出请求的文本(请记住,这仅仅是代表文档的 XML),并使用它创建一个新的 XML() 对象 knowledgeBase。完成这些之后,只需调用 start_over() 函数开始显示页面。
编缉推荐阅读以下文章
- 用 E4X 和 Prototype 创建 Ajax mindreader 应用程序,第 1 部分: 构建 Twenty Questions 基础结构
更多精彩
赞助商链接