Javascript jqueryajax函数返回

Javascript jqueryajax函数返回,javascript,jquery,scripting,decode,Javascript,Jquery,Scripting,Decode,我有一个嵌入flash的功能: function embedswfile(target, swf, base, width, height) {//dosomething} 我想这样调用函数 embedSwf("flashgame",decode("<?=base64_encode($path['location'])?>"),decode("<?=base64_encode($path['base_directory'])?>"),"800","600" ) 重要提

我有一个嵌入flash的功能:

function embedswfile(target, swf, base, width, height) {//dosomething}
我想这样调用函数

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

重要提示:

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

照办

embedSwf("flashgame","<? =$path['location']?>"),"<?=$path['base_directory']?>","800","600" )
将代码放入函数并从成功处理程序调用它:

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);
        }
    });
}
对于所有初学者来说,这似乎是一个非常常见的问题。你会发现这里有很多问题都是关于这个问题的

更新:

这不太好,但您可以将函数更改为

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" );

    });

});
但是,这将阻止浏览器,直到Ajax调用完成。你必须测试这对你来说是否重要

更新3:


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

重要提示:

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

照办

embedSwf("flashgame","<? =$path['location']?>"),"<?=$path['base_directory']?>","800","600" )
将代码放入函数并从成功处理程序调用它:

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);
        }
    });
}
对于所有初学者来说,这似乎是一个非常常见的问题。你会发现这里有很多问题都是关于这个问题的

更新:

这不太好,但您可以将函数更改为

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" );

    });

});
但是,这将阻止浏览器,直到Ajax调用完成。你必须测试这对你来说是否重要

更新3:


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

我试图解决这个问题:函数embeddeswf(“flashgame”,decode(“”),decode(“”),“800”,“600”){//do something},这样在我的文档中就不会真正看到swf。我对swf进行了编码,并试图在使用函数解码后将数据传递给javascriptdecode@nevergone:请查看我的更新。您可以使调用同步,但会冻结浏览器。测试它是否重要。我将创建自己的加密算法。这只是暂时的。我尝试了你在更新#1中所说的,但它不起作用。cb(数据)是什么?location和dir的值在哪里更改为uncoded?@nevergone:即使使用你自己的加密算法,作为响应从服务器发送的数据也不会加密,每个人都可以读取。或者你必须用JavaScript实现一个解密算法,然后你就不需要Ajax了。@nevergone:我这里有一个错误,它一定是:
success:function(data){cb(data);}
。值在
decode
函数中被“更改”。我试图解决这个问题:函数嵌入swf(“flashgame”,decode(“”),decode(“”),“800”,“600”){//do something},这样在我的文档中就看不到swf了。我对swf进行了编码,并试图在使用函数解码后将数据传递给javascriptdecode@nevergone:请查看我的更新。您可以使调用同步,但会冻结浏览器。测试它是否重要。我将创建自己的加密算法。这只是暂时的。我尝试了你在更新#1中所说的,但它不起作用。cb(数据)是什么?location和dir的值在哪里更改为uncoded?@nevergone:即使使用你自己的加密算法,作为响应从服务器发送的数据也不会加密,每个人都可以读取。或者你必须用JavaScript实现一个解密算法,然后你就不需要Ajax了。@nevergone:我这里有一个错误,它一定是:
success:function(data){cb(data);}
。值在
decode
函数中被“更改”。您的PHP文件在做什么?您的变量名很难理解。为什么要设置retdata=newmsg?您对返回的数据做了什么?请澄清,我们将能够提供更多帮助。谢谢要么不返回全局变量retdata并在函数调用后将其分配给变量,要么在解码函数中定义retdata PHP文件在做什么?您的变量名很难理解。为什么要设置retdata=newmsg?您对返回的数据做了什么?请澄清,我们将能够提供更多帮助。谢谢要么不返回全局变量retdata并在函数调用后将其分配给变量,要么在decode函数中定义retdata