This Ajax example communicates with an API on a remote server. The server data is in JSON format.
A Pen by Ken Shoufer on CodePen.
This Ajax example communicates with an API on a remote server. The server data is in JSON format.
A Pen by Ken Shoufer on CodePen.
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> | |
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/mustache.js/0.8.1/mustache.min.js"></script> |
<h1>Ajax Tutorial1</h1> | |
<h2>Coffee Orders</h2> | |
<template id="order-template"> | |
<li data-id="{{id}}"> | |
<p> | |
<strong>Name:</strong> | |
<span class="noedit name">{{name}}</span> | |
<input class="edit name"/> | |
</p> | |
<p> | |
<strong>Drink:</strong> | |
<span class="noedit drink">{{drink}}</span> | |
<input class="edit drink"/> | |
</p> | |
<button data-id='{{id}}' class='remove'>X</button> | |
<button class='editOrder noedit'>Edit</button> | |
<button class='saveEdit edit'>Save</button> | |
<button class='cancelEdit edit'>Cancel</button> | |
</li> | |
</template> | |
<div id="ordersContainer"> | |
<ul id="orders"></ul> | |
<h4>Add a Coffee Order</h4> | |
<p> name: <input type="text" id="name"></p> | |
<p> drink: <input type="text" id="drink"></p> | |
</div> | |
<button id="add-order">Add!</button> |
$(function () { | |
var $orders = $('#orders'); | |
var $name = $('#name'); | |
var $drink = $('#drink'); | |
var orderTemplate = $('#order-template').html(); | |
function addOrder (order) { | |
$orders.append(Mustache.render(orderTemplate, order)); | |
} | |
$.ajax({ | |
type: 'GET', | |
url: 'http://rest.learncode.academy/api/test1API/orders', | |
//data: {name: 'Frank', drink: 'Americano'}, | |
success: function(orders) { | |
$.each(orders, function(i, order) { | |
addOrder(order); | |
}); | |
}, | |
error: function() { | |
console.log('error loading orders'); | |
} | |
}); | |
$('#add-order').on('click', function() { | |
var order = { | |
name: $name.val(), | |
drink: $drink.val() | |
}; | |
$.ajax({ | |
type: 'POST', | |
url: 'http://rest.learncode.academy/api/test1API/orders', | |
data: order, | |
success: function(newOrder) { | |
addOrder(newOrder); | |
}, | |
error: function() { | |
console.log('error saving order'); | |
} | |
}); | |
});//end #add-order | |
$orders.delegate('.remove', 'click', function() { | |
var $li = $(this).closest('li'); | |
$.ajax({ | |
type: 'DELETE', | |
url: 'http://rest.learncode.academy/api/test1API/orders/' + $(this).attr('data-id'), | |
success: function() { | |
$li.fadeOut(300, function() { | |
$(this).remove(); | |
}); | |
}, | |
}); | |
});//end remove on click | |
$orders.delegate('.editOrder', 'click', function() { | |
var $li = $(this).closest('li'); | |
$li.find('input.name').val($li.find('span.name').html()); | |
$li.find('input.drink').val($li.find('span.drink').html()); | |
$li.addClass('edit'); | |
});//end editOrder on click | |
$orders.delegate('.cancelEdit', 'click', function() { | |
$(this).closest('li').removeClass('edit'); | |
});//end cancelEdit on click | |
$orders.delegate('.saveEdit', 'click', function() { | |
var $li = $(this).closest('li'); | |
var order = { | |
name: $li.find('input.name').val(), | |
drink: $li.find('input.drink').val() | |
}; | |
$.ajax({ | |
type: 'PUT', | |
url: 'http://rest.learncode.academy/api/test1API/orders/' + $li.attr('data-id'), | |
data: order, | |
success: function(newOrder) { | |
$li.find('span.name').html(order.name); | |
$li.find('span.drink').html(order.drink); | |
$li.removeClass('edit'); | |
}, | |
error: function() { | |
console.log('error updating order'); | |
} | |
}); | |
});//end saveEdit on click | |
})// the end |
#orders li { | |
background-color: #ccc; | |
width: 400px; | |
margin: 20px; | |
padding: 10px; | |
list-style: none; | |
} | |
#orders li .edit { | |
display: none; | |
} | |
#orders li.edit .edit { | |
display: initial; | |
} | |
#orders li.edit .noedit { | |
display: none; | |
} | |