作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下脚本来向我的 session 变量数组添加一个新值,并向我展示该变量完全实时 session
(function ($) {
Drupal.behaviors.MyfunctionTheme = {
attach: function(context, settings) {
$('.add-music').click(function () {
var songNew = JSON.stringify({
title: $(this).attr('data-title'),
artist: $(this).attr('data-artist'),
mp3: $(this).attr('href')
});
var songIE = {json:songNew};
$.ajax({
type: 'POST',
data: songIE,
datatype: 'json',
async: true,
cache: false
});
var session;
$.ajaxSetup({cache: false})
$.get('/getsession.php', function (data) {
session = data;
alert(session);
});
});
}}
})( jQuery );
问题是 POST 传送比调用 GET ALERT 花费的时间更长,然后显示 session 变量未更新。
有没有一种方法可以设置一个 IF 条件,以便仅在 POST 完成时返回我收到的响应?
谢谢
最佳答案
实际上,您想要做的是使用回调 - 也就是说,一旦您的 POST ajax 请求返回,就会调用一个函数。
例子:
(function ($) {
Drupal.behaviors.MyfunctionTheme = {
attach: function(context, settings) {
$('.add-music').click(function () {
var songNew = JSON.stringify({
title: $(this).attr('data-title'),
artist: $(this).attr('data-artist'),
mp3: $(this).attr('href')
});
var songIE = {json:songNew};
$.ajax({
type: 'POST',
data: songIE,
datatype: 'json',
async: true,
cache: false
})
.done(
//this is the callback function, which will run when your POST request returns
function(postData){
//Make sure to test validity of the postData here before issuing the GET request
var session;
$.ajaxSetup({cache: false})
$.get('/getsession.php', function (getData) {
session = getData;
alert(session);
});
}
);
});
}}
})( jQuery );
更新 根据 Ian 的好建议,我已将已弃用的 success() 函数替换为新的 done() 语法
Update2 我采纳了 radi8 的另一个很好的建议
关于javascript - 如何在jquery中完成一个函数执行另一个函数的加载条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15689066/
我是一名优秀的程序员,十分优秀!