我是jquery和编码的新手。这就是我想要做的事情:
这是我现在的代码:
http://jsfiddle.net/spadez/n9nVs/5/
window.onload = function () {
var a = document.getElementById("country_link");
a.onclick = function () {
$.ajax({
type: 'GET',
dataType: 'html',
url: '/ajax/test.html',
timeout: 5000,
beforeSend : function() {
$("#country_slide").show();
$("#country_slide").val('<p>Loading</p>')
},
success: function (data, textStatus) {
$("#country_slide").html(data);
alert('request successful');
},
error: function (xhr, textStatus, errorThrown) {
alert('request failed');
$("#country_slide").hide();
},
complete : function() {
$('.loader').hide();
},
});
return false;
}
}
点击链接后,我从未在框中看到加载文字。请有人能告诉我这里哪里出错了吗?另外,如果有人能就我的第一个jquery脚本提供任何建议,我会非常感激。
答案 0 :(得分:4)
您的主播ID是country
,而不是country_link
。所以:
var a = document.getElementById("country");
或者只使用jQuery的id选择器:
var a = $("#country");
甚至更好直接链:
$(function() {
$('#country').click(function () {
$.ajax({
type: 'GET',
dataType: 'html',
url: '/ajax/test.html',
timeout: 5000,
beforeSend : function() {
$("#country_slide").show();
$("#country_slide").html('<p>Loading</p>')
},
success: function (data, textStatus) {
$("#country_slide").html(data);
alert('request successful');
},
error: function (xhr, textStatus, errorThrown) {
alert('request failed');
$("#country_slide").hide();
},
complete : function() {
$('.loader').hide();
},
});
return false;
}
});
请注意,我使用了$(document).ready
函数而不是window.onload
。此外,我已使用jQuery的onclick
函数替换了click
事件订阅。如果您使用的是jQuery,最好充分利用它。
答案 1 :(得分:2)
因为没有ID country_link
document.getElementById()
将返回null
document.getElementById('country').onclick = ...; //should work
在JavaScript中,null
是一个特殊的原语,您无法向基本类型添加属性。
答案 2 :(得分:2)
你有小提琴
<a href="#" id="country">
它应该在哪里:
<a href="#" id="country_link">
或将JS更改为
var a = document.getElementById("country");
答案 3 :(得分:2)
<强> Working jsFiddle Demo 强>
country_link
元素。window.onload
。.on()
方法通过jQuery附加点击处理程序。.val()
方法适用于<input />
。对于其他元素,请改用.html()
。// DOM ready instead of window.onload
$(function () {
// attach click handler by jQuery instead of onclick
$('#country').on('click', function () {
$.ajax({
type: 'GET',
dataType: 'html',
url: '/ajax/test.html',
timeout: 5000,
beforeSend : function() {
$("#country_slide").show();
// val() method is for <input />
// use html() instead
$("#country_slide").html('<p>Loading</p>')
},
success: function (data, textStatus) {
$("#country_slide").html(data);
alert('request successful');
},
error: function (xhr, textStatus, errorThrown) {
alert('request failed');
$("#country_slide").hide();
},
complete : function() {
$('.loader').hide();
},
});
return false;
});
});
参考文献:
.html()
- jQuery API文档.on()
- jQuery API文档.val()
- jQuery API文档jQuery( callback )
- jQuery API文档答案 4 :(得分:0)
如果你已经拥有jQuery,那么不要使用普通的JS(对你来说会更容易):
;$(document).ready(function(){
$(country_link).click(function () {
$.ajax({
type: 'GET',
dataType: 'html',
url: '/ajax/test.html',
timeout: 5000,
beforeSend : function() {
$(country_slide).show();
$(country_slide).val('<p>Loading</p>');
},
success: function (data, textStatus) {
$(country_slide).html(data);
alert('request successful');
},
error: function (xhr, textStatus, errorThrown) {
alert('request failed');
$(country_slide).hide();
},
complete : function() {
$('.loader').hide();
},
});
return false;
});
});
答案 5 :(得分:0)
你必须添加一个id = country_link的元素,这个代码将按照NOX的说法运行。我在jsfiddle尝试过。尝试使用
$("#country").click(function(){
// your code goes here
})
这将有效。
答案 6 :(得分:0)
document.getElementById("country_link");
将被document.getElementById("country");
取代,因为"country_link"
不是标记中任何id
标记的<a>
。
如果您使用的是jQuery
库,则可以处理类似
$(document).on("click","a",function(){
//ajax stuff
});
答案 7 :(得分:0)
更新了您的jsfiddle代码。检查一下。它失败的方法。在您的工作区中,您应该让test.html返回实际数据。感谢。