Не уверен, почему он будет публиковаться дважды, но я отмечаю несколько проблем с вашим кодом.
Прежде всего, мы давно миновали встроенный JavaScript, и выполнение JavaScript внутри атрибута href
- это большое нет, нет (для этого есть атрибут onclick
, но это еще один динозавр, которого вы не должны касаться). Существует множество великолепных JavaScript-фреймворков, которые упрощают привязку к таким событиям, как клик.
Во-вторых, ваша post_result
функция определена как глобальная и не имеет точки с запятой.
Чтобы исправить вышесказанное, следующий фрагмент должен быть помещен в заголовок или в отдельный файл. Он будет делать то же самое, но в более jQuery-иш-стиле, следуя передовой практике.
JavaScript
// Short-hand for DOM-ready
$(function(){
// Define variable in local scope to store request
var request;
// Bind to the click event to all anchors with the class post-results
$("a.post-results").click(function(e){
// Prevent default behavior. I.e. stop browser from navigating
e.preventDefault();
// If there's a previous request, abort it. No need for two.
// You could also return here if you want to wait for the first
// one to finish.
if (request) { request.abort(); }
// Let's fire off the request and store it for future reference
request = $.post(
'http://192.168.2.3:8001',
{
"jasmine-url": "test url",
"jasmine-content": "test content"
}
)
.success(function(res) {
console.log("second success", res);
})
.error(function(xhr, err) {
console.log("error", err);
})
.complete(function() {
console.log("complete");
// Set request var to null
request = null;
});
});
});
HTML
<a class="post-results" href="#">Post result</a>
Чтобы убедиться, что jQuery загружен правильно, вы должны загрузить его из общедоступного CDN, такого как API библиотек Google .
Я также призываю вас перейти к типу HTML5, который обратно совместим с HTML4. Просто переключите ваш тип документа на <!DOCTYPE html>
и все готово.