如何编写一个自定义回调成功方法来将响应存储在一个对象中而不是基于响应做一些事情?

时间:2011-03-25 23:12:59

标签: javascript jquery ajax callback

对于ajax调用,如:

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

   },

   error :function(error){
});

有没有办法可以从成功函数中获取数据并将其存储在变量中?根据收到的数据,我必须存储一些财产。

如果没有,我可以做点什么吗

myCustomAjax({post data}, async, successFn, errorFn);

successFn将是我想根据某些行为从外部操纵的回调。

2 个答案:

答案 0 :(得分:1)

我仍然不完全理解你的问题但是评论框不足以满足我需要输入的内容:这个想法实际上只与接收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>

json.txt包含

{
 "mySuccessProperty": "succeeded",
 "dynamicFunction": "doQ"
}

输出将是

alert x
alert q

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

答案 1 :(得分:0)

var ajaxUrl = "/your/ajax/url";
myCustomAjax = function(data, isAsync, successCallback, errorCallback) {
    $.ajax(ajaxUrl, {
            data: data,
            async: isAsync,
            success: successCallback,
            error: errorCallback
    }
}

这就是你想要的吗?

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