gpt4 book ai didi

javascript - 如何在jquery中完成一个函数执行另一个函数的加载条件?

转载 作者:行者123 更新时间:2023-11-29 19:57:40 25 4
gpt4 key购买 nike

我有以下脚本来向我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com