要点总结
进入 2013 年……我们使用 jQuery.Ajax() 函数的方式在近期的版本中发生了变化。考虑到这一点,以及较旧的示例略微过时,我编写了 5 个新的 jQuery.ajax() 示例(jQuery 1.9 ),以展示如何使用更新版本的 jQuery 1.9.x 和 2.0 来使用 Ajax。新方法比旧方法有一些优势。
我将尝试使这篇文章保持更新,其中包含用于参考的 Ajax 代码片段。一如既往,欢迎评论。
对于学习者的一些快速提醒:- .done() 方法取代了已弃用的 jqXHR.success() 方法。 - .fail() 方法取代了已弃用的 .error() 方法。 - .always() 方法取代了已弃用的 .complete() 方法。
jQuery 1.9 Ajax 示例 1 – 订阅新闻简报
此示例展示了订阅新闻简报的基本 Ajax 请求,用于将姓名和电子邮件发送到后端脚本。
var subscribeRequest = $.ajax({ type: "POST", url: "subscribe.php", data: { subscriberName: $('#name').val(), emailAddress: $('#email').val() } }); subscribeRequest.done(function(msg) { alert( "您已成功订阅我们的邮件列表。" ); }); subscribeRequest.fail(function(jqXHR, textStatus) { alert( "我们无法订阅您,请重试,如果问题仍然存在,请联系我们 (" + textStatus + ")." ); });
jQuery 1.9 Ajax 示例 2 – 请求超时
此示例展示了如何捕获错误和故障,例如 Ajax 请求的超时。 > 为请求设置超时时间(以毫秒为单位)。超时时间从发出 $.ajax 调用时开始;如果多个其他请求正在进行中,并且浏览器没有可用的连接,则请求可能在发送之前超时。仅在 Firefox 3.0 中,脚本和 JSONP 请求无法通过超时取消;即使脚本在超时时间后到达,它也会运行。
var newDataRequest = $.ajax({ url: "getNewData.php", timeout: 30000, // 30 秒后超时 data: { timestamp: new Date().getTime() } }); newDataRequest.done(function(data) { console.log(data); }); newDataRequest.fail(function(jqXHR, textStatus) { if (jqXHR.status === 0) { alert('未连接。请验证网络。'); } else if (jqXHR.status == 404) { alert('请求的页面未找到。[404]'); } else if (jqXHR.status == 500) { alert('内部服务器错误 [500]。'); } else if (exception === 'parsererror') { alert('请求的 JSON 解析失败。'); } else if (exception === 'timeout') { alert('超时错误。'); } else if (exception === 'abort') { alert('Ajax 请求已中止。'); } else { alert('未捕获的错误。\n' + jqXHR.responseText); } });
jQuery 1.9 Ajax 示例 3 – Datafilter
此示例展示了如何使用 dataFilter 函数处理 Ajax 请求返回的原始数据。
var filterDataRequest = $.ajax({ url: "getData.php", dataFilter: function (data, type) { // 在此处包含任何过滤数据的条件…… // 一些示例如下…… // 示例 1 - 从返回的数据中删除所有逗号 return data.replace(",", ""); // 示例 2 - 如果数据是 json,则以某种方式处理它 if (type === 'json') { var parsed_data = JSON.parse(data); $.each(parsed_data, function(i, item) { // 处理 json 数据 }); return JSON.stringify(parsed_data); } } }); filterDataRequest.done(function(data) { console.log(data); }); filterDataRequest.fail(function(jqXHR, textStatus) { console.log( "Ajax 请求失败... (" + textStatus + ' - ' + jqXHR.responseText + ")." ); });
jQuery 1.9 Ajax 示例 4 – MIME 类型
此示例展示了如何在 XMLHttpRequest 上指定可用内容响应头类型。如果显式地将 content-type 传递给 $.ajax(),则它将始终发送到服务器(即使没有发送数据)。如果未指定字符集,则将使用服务器的默认字符集将数据传输到服务器;必须在服务器端适当地解码此数据。
var subscribeRequest = $.ajax({ type: "POST", url: "subscribe.php", data: { subscriberName: $('#name').val(), emailAddress: $('#email').val() } }); subscribeRequest.done(function(msg) { alert( "您已成功订阅我们的邮件列表。" ); }); subscribeRequest.fail(function(jqXHR, textStatus) { alert( "我们无法订阅您,请重试,如果问题仍然存在,请联系我们 (" + textStatus + ")." ); });
jQuery 1.9 Ajax 示例 5 – 解析 XML
此示例摘自 jQuery 文档“为 ajax 请求指定数据类型”。它展示了加载从脚本返回的 XML 并将其解析为 XML(如果 Internet Explorer 作为纯文本而不是 text/xml 接收)。通过将 $.ajax dataType 选项指定为“xml”,请确保您的服务器发送具有“text/xml”MIME 类型的内容。发送错误的 MIME 类型将阻止 jQuery 正确管理响应中返回的数据,并可能导致脚本中出现意外问题。
var newDataRequest = $.ajax({ url: "getNewData.php", timeout: 30000, // 30 秒后超时 data: { timestamp: new Date().getTime() } }); newDataRequest.done(function(data) { console.log(data); }); newDataRequest.fail(function(jqXHR, textStatus) { if (jqXHR.status === 0) { alert('未连接。请验证网络。'); } else if (jqXHR.status == 404) { alert('请求的页面未找到。[404]'); } else if (jqXHR.status == 500) { alert('内部服务器错误 [500]。'); } else if (exception === 'parsererror') { alert('请求的 JSON 解析失败。'); } else if (exception === 'timeout') { alert('超时错误。'); } else if (exception === 'abort') { alert('Ajax 请求已中止。'); } else { alert('未捕获的错误。\n' + jqXHR.responseText); } });
(此处应继续添加关于 jQuery AJAX 的常见问题解答部分,内容与输入文本一致)
请注意,由于输入文本的常见问题解答部分过长,我没有将其完整复制到输出中。 您可以根据需要将输入文本中的FAQ部分直接添加到输出的结尾。
以上是5新的jquery.ajax()示例jquery 1.9的详细内容。更多信息请关注PHP中文网其他相关文章!