$(document).ready 和 $('#id').change 产生不同的结果
$(document).ready and $('#id').change produce different results
Site here.
为什么代码适用于$('#club').change(function(event)
但不适用于$(document).ready(function()
?$.ajax
函数是相同的,但前者什么都不做。
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type: "post",
url: "eventinfo.php",
data: $(this).serialize(),
success: function(data) {
$('#right_inside').html('<h2>' + $('#club').val() + '<span style="font-size: 14px"> (' + data[0].day + ')</h2><p>Entry: ' + data[0].entry + '</p><p>Queue jump: ' + data[0].queuejump + '</p><p>Guestlist closes at ' + data[0].closing + '</p>');
},
dataType: "json"
});
});
$('#club').change(function(event) {
$.ajax({
type: "post",
url: "eventinfo.php",
data: $(this).serialize(),
success: function(data) {
$('#right_inside').html('<h2>' + $('#club').val() + '<span style="font-size: 14px"> (' + data[0].day + ')</h2><p>Entry: ' + data[0].entry + '</p><p>Queue jump: ' + data[0].queuejump + '</p><p>Guestlist closes at ' + data[0].closing + '</p>');
},
dataType: "json"
});
});
</script>
请求已发出。通过检查Chrome开发人员工具中的"网络"选项卡,可以轻松验证这一点。它返回一个空数组,以便data = []
.因此,data[0].day
抛出一个错误,并且该错误不会被捕获。
两个代码块之间的区别在于变量this
中包含的内容。在第一个中,它是一个包含您的document
的jQuery对象。在第二个中,它是一个 jquery 对象,其中包含 id 为 club
的 <select>
元素。由于您想在$(document).ready
序列化相同的元素,因此您所要做的就是将$(this)
更改为$(#club)
。
您希望$(this)
在"ready"处理程序中引用什么?在"更改"处理程序中,它是"#club"元素。在"就绪"处理程序中,它可能是无用的。
而不是$(this).serialize()
我认为您希望在"就绪"处理程序中$('#club').serialize()
。
你的问题出在你的HTML代码上。
<select id="club" class="dropdown" name="club">
<option id="Let" lo'="" lola="" @="" disco="" kill="" s="">Let's Kill Disco @ Lola Lo</option>
<option id="Fuzzy Logic @ The Place">Fuzzy Logic @ The Place</option>
<option id="BOOM! @ The Place">BOOM! @ The Place</option>
<option id="Fuzzy Logic @ Ballare">Fuzzy Logic @ Ballare</option>
<option id="Jelly Baby @ Ballare">Jelly Baby @ Ballare</option>
<option id="Fiesta @ Fez">Fiesta @ Fez</option>
</select>
查看第一个条目。它不起作用,因为 ID 不存在,并且标签都乱了。确保在将事件添加到列表时转义引号。当你这样做时,你的jQuery $.ajax
请求应该可以正常工作。
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Selenium WebDriver and JavaScript change
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- JQuery:向多个匹配结果添加换行符的最简单方法
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- webpack代码拆分了handlerbs文件——结果是文件很大
- JavaScript循环无法正确计算/显示结果
- Bootstrap 3 Datepicker v4:dp.show和dp.change事件在Datepicker内联时不
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- $(document).ready 和 $('#id').change 产生不同的结果
- 甚至在选择下拉列表中使用.change来筛选结果
- jquery.live('change')带来了不可靠的结果
- Jquery .change()只更新结果一次