-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathajax.transport.html
87 lines (85 loc) · 3.37 KB
/
ajax.transport.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<!DOCTYPE html>
<html dir="ltr" lang="en-US">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Пример создания транспорта для AJAX</title>
<link rel="profile" href="https://gmpg.org/xfn/11"/>
<link rel="shortcut icon" href="https://anton.shevchuk.name/favicon.ico"/>
<link rel="stylesheet" href="css/styles.css"/>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/code.js"></script>
<script>
$.ajaxTransport('image', function (options) {
if (options.type === 'GET' && options.async) {
let image
return {
send: function (_, callback) {
image = new Image()
// подготовим функцию done
function done (status) {
if (image) {
var statusText = (status === 200) ? 'success' : 'error', tmp = image
image = image.onreadystatechange = image.onerror = image.onload = null
callback(status, statusText, { image: tmp })
}
}
image.onreadystatechange = image.onload = function () {
done(200)
}
image.onerror = function () {
done(404)
}
image.src = options.url
},
abort: function () {
if (image) {
image = image.onreadystatechange = image.onerror = image.onload = null
}
}
}
}
})
</script>
</head>
<body>
<header>
<h1>Своя реализация AJAX-транспорта</h1>
<h2>Пример надуманный, код рабочий</h2>
</header>
<main>
<article>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus rutrum,
lectus eu varius consectetur, libero velit hendrerit augue, ut posuere enim neque
in libero. Donec eget sagittis nibh. Suspendisse sed tincidunt urna. Cras quis
euismod neque. Maecenas auctor ultricies posuere. Pellentesque luctus pulvinar dui
eget semper. Donec sodales odio eu sapien varius luctus. Donec dictum feugiat diam
at malesuada. Sed nec massa in augue condimentum faucibus quis ut diam. Quisque
nisl sem, semper nec vulputate vel, mattis sit amet justo. Aliquam purus felis,
tempor at scelerisque quis, tincidunt in neque. Etiam ut risus diam. Pellentesque
fermentum risus id elit feugiat cursus. Ut fringilla dictum diam, sed iaculis
lorem pulvinar ut. Cras vel elit id velit commodo viverra sit amet vel orci.
</p>
</article>
</main>
<footer>
© <a href="https://anton.shevchuk.name/jquery-book/">jQuery for beginners</a>
</footer>
<aside>
<nav>
<a href="ajax.jsonp.html" title="go prev" rel="prev">Prev</a>
<a href="index.html#60" title="back to Index" rel="index">Index</a>
<a href="#" title="reload" onclick="window.location.reload();return false">Reload</a>
</nav>
<hr/>
<code>$.ajax(<span>'images/events.svg'</span>, {
dataType:<span>'image'</span>,
success: function(data) {
$(<span>'article'</span>).html(data);
}
});</code>
<button type="button">Run Code</button>
</aside>
</body>
</html>