11.3.3 get()和post()函数
本书11.3.1节介绍的load()函数是从Web服务器获取HTML并将其插入一个页面中的一种快速方法。但是,服务器不会总是返回纯粹的HTML,它可能返回一条消息、一个代码编号,或者是需要使用JavaScript进一步处理的数据。例如,如果想要使用Ajax来获取某些数据库记录,服务器可能返回包含了这些记录的一个XML文件(参见本章的“高级用户提示:接收来自服务器的XML”部分)或一个JSON对象(参见11.4节的介绍)。我们不能仅仅把数据插入页面中,首先必须获取数据并以某种方式处理它以产生需要的HTML。
jQuery的get()和post()函数提供了简单的工具来向Web服务器发送数据或从Web服务器获取数据。正如11.2.2节的步骤2所介绍,在使用GET或POST方法的时候,我们需要对XMLHttpRequest对象略有区别。然而,jQuery负责这两种方法之间的任何区别,因此get()和post()函数以相同的方式工作。(那么,该使用哪一个呢?请阅读本章后面的“常见问题:GET还是POST”部分)。
这两个函数的基本结构是:
$.get(url, data, callback);
或
$.post(url, data, callback);
和大多数其他的jQuery函数不同,我们不会把get()和post()添加给一个jQuery选择器,换句话说,我们不会做像下面这样的事情:$('#mainContent').get('products.php')。这两个函数彼此独立,并且不会和页面上的任何元素连接起来,因此,我们只是使用$符号,后面跟着一个句点,再跟着get或post:$.get()。
get()和post()函数接收3个参数:url是包含了处理数据的服务器端脚本的路径的一个字符串(例如,'processForm.php')。data参数是一个字符串或者一个JavaScript对象直接量,包含了要发送给服务器的数据(我们将在下一节中学习如何创建它)。最后,callback是处理服务器返回的信息的函数(参见6.4节中的“高级用户提示:在效果完成后执行一个操作”部分,以了解关于编写回调函数的详细内容)。
不管是运行get()函数还是运行post()函数,Web浏览器都把数据送出到一个特定的URL。当服务器向浏览器送回数据的时候,浏览器把数据传递给回调函数,回调函数处理信息并且通常以某种方式更新Web页面。我们将在11.3.7节看到一个实际的例子。