0
 <script>


            var addUser = function() {
                var defer = $.Deferred()
                $.ajax("http://localhost/PhpProject1/index.php", {
                    type: "POST",
                    jsonpCallback: 'yes',
                    data: {username: 'test'},
                    contentType: "application/json",
                    dataType: "jsonp"
                });
                 success:(function(data) {
                    defer.resolve(data);
                })

            }
            filtered = defer.then(function(value) {
                return value;
            });
            filtered.done(function(value) {
                console.log(value);
            });
            $("button").on("click", addUser);




        </script>

我创建了上面的函数来从 jsnop 检索数据。这里我使用了 Defered 。但是当我尝试这段代码时,我得到了以下错误。

  Uncaught ReferenceError: defer is not defined 
4

1 回答 1

0

如果您从那里返回defer.promiseaddUser您可以设置如下

 var addUser = function () {
     var defer = $.Deferred()
     /* ajax and resolve/reject*/
     return defer

 }

 var filtered = addUser().then(function (value) {
     return value;
 });  

$.ajax()还返回一个承诺。你可以做同样的事情而不直接创建一个新的$.Deferred

 var addUser = function () {

     return $.ajax({ /* ajax options*/})

 }
于 2013-11-03T18:13:37.150 回答