javascript - JQuery Ajax-anrop ska utlösas vid onClick
Jag är ny på JavaScript, Jquery och Ajax. Detta är vad jag försöker göra:
Jag har en knapp i min HTML-kod, och jag vill utlösa ett AJAX-anrop som kommer att göra en GET-förfrågan till en webbserver som körs på min lokala maskin.
Detta är vad jag har hittills:
JS-kod:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript">
$('call').click(function() {
alert("hiii");
$.ajax({
'url' : 'localhost:8080/blah/blah/blah',
'type' : 'GET',
beforeSend: function() {
alert(1);
},
error: function() {
alert('Error');
},
'success' : function(data) {
if (data == "success") {
alert('request sent!');
}
}
});
});
</script>HTML-kod:
<body>
<div>
<form>
<div class = "buttons">
<input type="submit" id="call" value="call">
</div>
</form>
</div>
</body>Kan någon hjälpa mig? Tack på förhand!
Svar #1
Du har några problem med din kod. För det första pekar din selektor inte på någon klass eller ID. Du behöver använda .call eller #call för en klass respektive ID. För det andra har ditt skript ingen document.ready-funktion. Kolla in koden nedan.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript">
// document.ready function
$(function() {
// selector has to be . for a class name and # for an ID
$('.call').click(function(e) {
e.preventDefault(); // prevent form from reloading page
alert("hiii");
$.ajax({
'url' : 'localhost:8080/blah/blah/blah',
'type' : 'GET',
beforeSend: function() {
alert(1);
},
error: function() {
alert('Error');
},
'success' : function(data) {
if (data == "success") {
alert('request sent!');
}
}
});
});
});
</script>
Svar #2
Som @NightOwlPrgmr nämnde är din selector felaktig. För att rätta till detta måste du använda #call och inte .call eftersom detta är ett id och inte ett klass-attribut. Dessutom kommer Document.ready-funktionen att säkerställa att din kod körs efter att alla HTML-element har laddats. Detta minskar risken att försöka använda ett element som ännu inte har skapats. Ett exempel på kod liknande den ovan är:-
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js">
</script>
</head>
<body>
<div>
<form>
<div class = "buttons">
<input type="submit" id="call" value="call">
</div>
</form>
</div>
<script type="text/javascript">
// document.ready function
$(document).ready(function() {
// selector has to be . for a class name and # for an ID
$('#call').click(function(e) {
e.preventDefault(); // prevent form from reloading page
alert("hiii");
$.ajax({
'url' : 'localhost:[port_number_web_server]/blah/blah/blah',
'type' : 'GET',
beforeSend: function() {
alert(1);
},
error: function() {
alert('Error');
},
'success' : function(data) {
if (data == "success") {
alert('request sent!');
}
}
});
});
});
</script>
</body>
