I have the following javascript where I am reading in a word and writing out a translation, but I keep getting the error boolean is not a function
function translate() {
var word = $("#prodId").val();
$.getJSON("api/translation?word=" + word,
function (data) {
$("#word").text(data.TranslatedWord);
})
.fail(
function (jqXHR, textStatus, err) {
$("#word").text('Error: ' + err);
});
}
The following method which is basically the same thing, but uses an integer works fine:
function find() {
var id = $("#prodId").val();
$.getJSON("api/products/" + id,
function (data) {
var str = data.Name + ': $' + data.Price;
$("#product").text(str);
})
.fail(
function (jqXHR, textStatus, err) {
$("#product").text('Error: ' + err);
});
}
Here is a snippet of the HTML:
<div id="body">
<div class="main-content">
<div>
<h1>All Products</h1>
<ul id="products" />
</div>
<div>
<label for="prodId">ID:</label>
<input type="text" id="prodId" />
<input type="button" value="Translate" onclick="translate();" />
<p id="word" />
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
// Send an AJAX request
$.getJSON("api/products/",
function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, val) {
// Format the text to display.
var str = val.Name + ': $' + val.Price;
// Add a list item for the product.
$('<li/>', { text: str })
.appendTo($('#products'));
});
});
});
function find() {
var id = $("#prodId").val();
$.getJSON("api/products/" + id,
function (data) {
var str = data.Name + ': $' + data.Price;
$("#product").text(str);
})
.fail(
function (jqXHR, textStatus, err) {
$("#product").text('Error: ' + err);
});
}
function translate() {
var word = $("#prodId").val();
$.getJSON("api/translation?word=" + word,
function (data) {
$("#word").text(data.TranslatedWord);
})
.fail(
function (jqXHR, textStatus, err) {
console.log(err);
$("#word").text('Error: ' + err);
});
}
</script>
It seems that in chrome all elements have a boolean property called translate, (e.g. console.log(document.body.translate) will display true in chrome, not sure why.
When you do onclick="translate();" then it simply calls it on the local DOM object scope (now why doesn't it call it on the window object is another question)
e.g. if you change translate to translate2 it should work, as weird as it sounds
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With