Angular $http.jsonp() 方法只工作一次

Angular $http.jsonp() method works only once

响应成功(警报->完成),但第二次和另一次点击将响应 'error'。

我已经尝试使用 'cache: false' 添加一些配置参数,但仍然只能在第一次使用。我应该清除一些 cache/history 还是什么?

    $scope.add2 = function() {

    var config = {
        //url : 'http://www.***.pl/index.php/json/getallusers',
        cache: false,
        //type : 'POST',
        crossdomain: true,
        //callback: 'JSON_CALLBACK',
        //data: d,
        contentType: "application/json",
        dataType: "jsonp",
    };

            var r = Math.floor(Math.random() * 1000) + 4;
            var d = {user_type_id:0, user_venue_id:0, fname:r}; 
            var e = objToString(d);


//$http.jsonp('http://www.***.pl/index.php/json/adduserget?callback=JSON_CALLBACK&'+ e, config)

$http.jsonp('http://www.***.pl/index.php/json/adduserget?callback=JSON_CALLBACK&'+ e)
                .success(function(res){
                    console.log('res:' + res.user); 
                    alert('done');
                })
                .error(function(){  
                    console.log('error');       
                    alert('error');
                }); 
        };

这是

中的新问题

我已经在 json 数据之前添加到服务器响应 'angular.callbacks._0('...也许这里有误?

这是针对我的问题的解决方案: 现在我正在动态获取可以变化的回调参数(并不总是 angular.callback_0,但可以是:angular.callback_1、angular。 callback_2, 等)来自服务器的 GET 方法,并将其放在 php 中的响应数据 f.e 之前:

<?php header('content-type: application/json;');
$json=json_encode($result);
echo $_GET['callback'].'('.$json.')';
?>

问题是因为 url 正在浏览器中缓存,而另一次它将从 cache.So 中获取我建议您在 URL 中添加新的虚拟参数将具有当前 Date.now(),这样每次您调用服务时,都会使 URL 成为 Date.now() 组件的唯一母鹿。

代码

$http.jsonp('http://www.where2play.pl/index.php/json/adduserget?callback=JSON_CALLBACK&'+
 e + '&dummy='+ Date.now()) //<--this will add new value everytime to make url unique