Javascript和Jquery混合,首先发生什么
Javascript and Jquery mixing, what happens first?
我很抱歉问了这么一个简单的问题,但是在谷歌上搜索"javascript还是jquery "总是有人问我应该先学哪个。
目前我有几行javascript,然后是一点jquery,然后是一点javascript。这是它崩溃的部分…
$.get("alliances.php", function(data, status){
console.log(data);
searchIndex = data.search(allianceName);
rawAllianceLink = data.slice(searchIndex-25,searchIndex);
});
console.log(rawAllianceLink);
执行完这段代码后,JQuery最后执行,console.log输出undefined。(注意,console.log并不是实际的语句,我有更多的行需要在这之后执行,这只是一个无序执行的示例。)我想知道是否有人可以澄清或解释我如何改变每一个步骤的执行。
简单的ans:
这只是因为你的$.get(...
是一个AJAX调用。你必须在回调处理程序中记录你的数据。
$.get("alliances.php", function(data, status){
console.log(data);
searchIndex = data.search(allianceName);
rawAllianceLink = data.slice(searchIndex-25,searchIndex);
})
.done(function() {
console.log(rawAllianceLink);
});
让我们在这里弄清楚一些事情。$.get()
是$.ajax()
在jQuery中的包装器。所应用的javascript发生在jQuery
库中。
接下来,$.get
调用是asynchronous
,这意味着console.log(rawAllianceLink);
可能会在$.get()
请求完成之前触发,这需要一些时间来获取文件并读取数据。
只有在请求完全完成后,function(data, status)
才应用于alliances.php
返回的数据。在这个回调函数中,看起来好像你已经正确地应用了你想要的javascript方法。
如果您需要在回调执行后触发进一步的代码,那么您应该将其放入一个函数中并在最后执行该函数,将rawAllianceLink
作为参数传递,如下所示:
$.get("alliances.php", function(data, status){
console.log(data);
searchIndex = data.search(allianceName);
rawAllianceLink = data.slice(searchIndex-25,searchIndex);
process_request(rawAllianceLink);
});
function process_request(RAL){
console.log(RAL);
}
现在事情将按正确的顺序被触发。您也可以查看jQuery的$. deferred,但这可能是完全不同的。
代码中发生的事情是,调用jQuery "get"函数,它向服务器发送请求以检索"alliance .php"中的一些信息,但它只是发送请求,它不等待响应,然后它继续使用console.log。稍后,浏览器从服务器获得响应,当浏览器有机会时,它执行回调函数中的代码。这种编程不是jQuery独有的,javascript中的事件处理程序、超时、间隔等都会发生,无论你是否使用jQuery。
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- 什么更好?使用iframe或jQuery之类的东西在外部网站中加载HTML文件
- 在jQuery中使用$('body').html('')意味着什么
- 什么'这是加载jQuery的最佳方式
- jQuery中的状态管理是什么
- 在页面加载或点击发生之前,窗口会弹出什么?JQUERY移动
- 在self.setInterval中,jquery关键字self-referred指的是什么?jquery
- 这个插件要求回调字符串的格式是什么?(jquery ui multisearch)
- 我的网站移动版应该使用什么?jquery mobile/CS3页面媒体/通过jscript检测浏览器大小或重定向到新页面
- 在使用AJAX获取html内容后,向新元素添加监听器的正确方法是什么?(jQuery,Javascript)
- 在$(document).ready()之后调用什么jQuery事件
- $(window).调整做了什么?JQuery移动
- 使用PHP生成HTML的最佳方法是什么?JQuery
- $find('mycontrol')做了什么jquery $('#mycontrol')
- 最有效的方法是什么(jquery代码段)
- 如果我想让它在页面加载时被触发,我该放什么jQuery方法呢?
- 我应该使用什么Jquery mouseevent来获得正确的值
- 编写由JavaScript而不是纯HTML解析的链接的最佳方式是什么?(jQuery标签)
- 元素之间的区别是什么?jQuery's element.offset()