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

时间:2015-07-19 18:41:29

标签: javascript ajax angularjs jsonp angular-http

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

我尝试使用'cache:false'添加一些配置参数但仍然只能第一次使用。我应该清除一些缓存/历史记录还是某事?

    $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');
                }); 
        };

这是jsonp and post action in ionic framework (angular.js)

中的新问题

我已经添加到服务器响应'angular.callbacks._0('在json数据之前......'可能是这里的错误?

这是我的问题的解决方案: 现在我正在动态地获取回调参数,该参数可以通过服务器上的GET方法改变(不总是angular.callback_0,但可以是:angular.callback_1,angular.callback_2等)并将其放在php中的响应数据fe之前:

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

1 个答案:

答案 0 :(得分:2)

问题是因为url在浏览器中被缓存,而另一次它将从缓存中获取。所以我建议你在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