Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何编写一个自定义回调成功方法来将响应存储在对象中,然后根据响应做一些事情?_Javascript_Jquery_Ajax_Callback - Fatal编程技术网

Javascript 如何编写一个自定义回调成功方法来将响应存储在对象中,然后根据响应做一些事情?

Javascript 如何编写一个自定义回调成功方法来将响应存储在对象中,然后根据响应做一些事情?,javascript,jquery,ajax,callback,Javascript,Jquery,Ajax,Callback,对于ajax调用,如: $.ajax({ .... success :function(data){ }, error :function(error){ }); 有没有办法从success函数中获取数据并将其存储在变量中?根据收到的数据,我必须存储一些属性 如果没有,我可以做类似的事情吗 myCustomAjax({post data}, async, successFn, errorFn); successFn将是我希望基于某些行为从外部操纵的回调 var a

对于ajax调用,如:

$.ajax({
   ....
   success :function(data){

   },

   error :function(error){
});
有没有办法从success函数中获取数据并将其存储在变量中?根据收到的数据,我必须存储一些属性

如果没有,我可以做类似的事情吗

myCustomAjax({post data}, async, successFn, errorFn);
successFn
将是我希望基于某些行为从外部操纵的回调

var ajaxUrl = "/your/ajax/url";
myCustomAjax = function(data, isAsync, successCallback, errorCallback) {
    $.ajax(ajaxUrl, {
            data: data,
            async: isAsync,
            success: successCallback,
            error: errorCallback
    }
}
这是你想要的吗


是的,你们可以将结果存储在任何你们想要的变量中,但我猜你们并不是真的想要——你们在这里处理的是异步编程,所以你们可能会遇到竞争条件和其他问题。使用回调。

我仍然不完全理解您的问题,但注释框不足以满足我需要键入的内容:这种想法实际上只与接收JSON的ajax调用相关,JSONP请求可以做一些其他事情

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="../scripts/jquery-1.5.1.min.js"></script>
</head>
<body>
    <script language="javascript">
        function doX() { alert("x"); }
        function doQ() { alert("q"); }
        function doY() { alert("y"); }
    (function () {
        $.ajax({
            url: "json.txt",
            dataType: 'json',
            cache: false,
            success: function (data, textStatus, jqXHR) {
                if (data.mySuccessProperty == "succeeded") {
                    doX();
                    (function () { eval(data.dynamicFunction)(); })();
                }
                else {
                    doY();
                    (function () { alert("Z"); })();
                }
            },
            error: function (jqXHR, textStatus, error) {
                // handle error
                alert("error" + error);
            }
        });
    })();

    </script>
</body>
</html>
输出将是

alert x
alert q

对我来说,很多这样的想法都很愚蠢,我只是编写了一些你可以做的随机事情,但是如果没有使用这些想法的应用程序的上下文,它们就不一定有意义。

你能澄清这个问题吗?是的,您可以将其存储在变量中,以便在该函数之外使用它。只要像“mynewdata=data;”那样分配它,就会将它存储在全局对象中,这样您就可以像mynewdata、window.mynewdata或window[“mynewdata”]一样访问它了!我不想将其存储在全局变量中,而是使用闭包或回调函数……听起来您已经知道如何执行所要求的操作。@标记您的观点是什么?我只是在尝试,如果有其他方法,我可以提取的反应…顺便问一下,什么是背后的投票否决的原因?如果你想投反对票,请给出一个合理的理由。@paul我投了你的反对票,因为我认为这个问题缺乏细节,当你提出建议时,你基本上说你知道怎么做。我的意思是不要问你已经知道答案的问题。在我的评论中,我并不打算向您全面介绍javascript。只要给你一个选择。如果你对如何解决问题有想法,那么应该将其包含在你的帖子中,以便其他读者能够清楚地看到。当我要求你澄清这个问题时,你没有做任何努力,只是反驳了我。谢谢@wildcard…假设我必须使用回调成功函数来获取一些值…假设我的返回json看起来像Ethanks@wildcard…假设我必须使用回调成功函数来获取一些值…假设我的返回json看起来像{“职业”:“艺术家”,“年龄”:“26”}…现在我可以像myCustomAjax一样使用回调函数({name:“mike”},true,function(){update()},errorCallback);var update=(function(){var something=function(data){//domething};return something;});…不确定是否可以,但需要将
数据
对象传递给回调函数,因此它必须是
函数(数据){update(数据)},errorCallback);var update=(函数(数据){(…)
…不确定为什么要将
update
包装到附加函数中,如果不这样做,可以简单到
update,errorCallback);var update=(函数(数据){(…)
-因为jQuery将调用
update(数据)
无论如何。上面示例中的success函数已经是匿名函数了。我的意思是,自动执行的匿名函数不必担心语法。它只是一个伪代码…(function(){}())…是一个自动执行的函数…好吧,我完成了它。有些代码是完全随机的,我在不需要的时候使用匿名函数和其他奇怪的东西。他们只是想尝试找出@paul想要得到的答案。谢谢!…实际上新的jquery 1.5附带了promise Api,它解决了我的很多问题AJAX callback…但我感谢你的帮助…现在有了promise api,我可以链接我的回调。。。
alert x
alert q