gpt4 book ai didi

javascript - jQuery ajax 函数返回

转载 作者:行者123 更新时间:2023-11-30 10:53:55 28 4
gpt4 key购买 nike

我有这个嵌入 flash 的功能:

function embedswfile(target, swf, base, width, height) {//dosomething}

我想这样调用函数

embedSwf("flashgame",decode("<?=base64_encode($path['location'])?>"),decode("<?=base64_encode($path['base_directory'])?>"),"800","600" )

想法是,每当有人在我的网站中寻找任何 swf 时,他都找不到任何干净的东西。我会更改编码算法,但这只是暂时的。为了使该函数起作用,每当我调用函数“解码”时,它都必须返回一个值。 PHP 包含

<?php
echo base64_decode($_POST['s']);
?>

我试过了,还是不行

var globvar;
function processdata(newmsg) {
globvar = newmsg;
}

function decode(s){
$.ajax({type: "POST",
url: "includes/decode.inc.php",
data: "s=" + s,
success:function(newmsg){
processdata(newmsg);
}
});
return globvar;
}

最佳答案

重要:

忘记使用 Ajax 和编码,解码路径。你认为你从中得到了什么?安全?不。可以看出这是 bas64 编码的,或者他只是监视网络流量并读取来自 Ajax 调用的响应。

就这样

embedSwf("flashgame","<? =$path['location']?>"),"<?=$path['base_directory']?>","800","600" )

实际上,您无法阻止其他人看到数据,只会让您的事情变得更复杂。

(或者您必须使用 JavaScript 解密数据。)


(原来的答案仍然正确)

Ajax 是异步的,所以像 var test = decode(s); 这样的东西永远不会工作。解码函数将在 Ajax 调用完成之前返回。

相反,将您的逻辑放入回调处理程序中。例如,如果您的代码之前是这样的:

var retdata = decode('s');
// here comes code that handles retdata

将代码放入一个函数中并从成功处理程序中调用它:

function process(retdata) {
// here comes code that handles retdata
}

function decode(s){
$.ajax({type: "POST",
url: "includes/decode.inc.php",
data: "s=" + s,
success:function(newmsg){
process(newmsg);
}
});
}

对于所有初学者来说,这似乎是一个非常普遍的问题。你会在这里找到很多关于 same problem 的问题。 .

更新:

这不是很好,但你可以将功能更改为

function decode(s, cb){
$.ajax({type: "POST",
url: "includes/decode.inc.php",
data: "s=" + s,
success:function(data){
cb(data);
}
});
}

decode("<?=base64_encode($path['location'])?>", function(location) {

decode("<?=base64_encode($path['base_directory'])?>", function(dir) {

embedSwf("flashgame",location,dir,"800","600" );

});

});

更新 2:

为了完整起见,您可以使用 async: false 使 Ajax 调用同步.然后这将起作用:

function decode(s){
var ret;
$.ajax({type: "POST",
url: "includes/decode.inc.php",
data: "s=" + s,
async: false,
success:function(newmsg){
ret = newmsg;
}
});
return sync;
}

var val = decode(s);

但是,这将阻塞浏览器,直到 Ajax 调用完成。您必须测试这对您的情况是否重要。

更新 3:

您还可以将 PHP 脚本更改为不仅接受一个参数而且接受多个参数并一次处理两个字符串。

关于javascript - jQuery ajax 函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407421/

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