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

Angular $http.jsonp() method works only once

本文关键字:工作 一次 方法 http jsonp Angular      更新时间:2023-09-26

响应成功(alert->done),但第二个和另一个点击将响应'error'。

我已经尝试添加一些配置参数与'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');
                }); 
        };

这是json中的新问题和ionic framework (angular.js)中的post action

我在服务器响应中添加了angular.callbacks。_0(' before json data…也许这是错误的?

这是我的问题的解决方案:现在我动态地获得回调参数,可以通过变化(不总是角。Callback_0,但可以是:angular。callback_1,棱角分明。callback_2等)从服务器的GET方法中取出,并将其放在php中的响应数据f.e之前:

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

问题是因为url在浏览器中被缓存,而其他时间它将从缓存中获取。因此,我建议您在URL中添加新的虚拟参数,该参数将具有当前的Date.now(),以便每次调用服务时都将使URLDate.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