Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jsonp不工作的$resource_Javascript_Angularjs - Fatal编程技术网

Javascript jsonp不工作的$resource

Javascript jsonp不工作的$resource,javascript,angularjs,Javascript,Angularjs,我遇到了问题,代码如下: angular.module('offerServices', ['ngResource']) .factory('Offer', function ($resource) { return $resource('url/offers', { callback: 'JSON_CALLBACK' }, { query: { method: 'JSONP' } }

我遇到了问题,代码如下:

angular.module('offerServices', ['ngResource'])
    .factory('Offer', function ($resource) {

        return $resource('url/offers', { callback: 'JSON_CALLBACK' },
            {
                query: { method: 'JSONP' }
            }
        );                   

    })
    .factory('Trustyou', function ($resource) {
            return $resource('https://api.trustyou.com/hotels/:id/seal.json', {},
                {
                    query: { method: 'JSONP' }
                }
            );
    });
调用Offer.query{},函数{};在我的控制器工作没有任何问题。 但这部分不起作用:

       var trustYouData = Trustyou.query({ id: 'd8421e79-99f0-41b2-8d6e-9cfd62a9776b' }, function (data) {
            console.log(data);
        });
这将始终返回400错误:

网络错误:400错误请求-

当我更改代码并使用jQuerys.getJSON时,我没有任何问题:

 $.getJSON("https://api.trustyou.com/hotels/d8421e79-99f0-41b2-8d6e-9cfd62a9776b/seal.json?callback=?", function (data) {
            console.log(data);                           
        });

为什么jQuery方法可以工作,但angulars$resource实现在这种情况下返回错误?

angulars上的回调函数有问题,我在git中发现了一个问题

回调名称必须是JSONP_callback,在此回调中angular将把回调名称改为callback=angular.callbacks.\u 1

有些web服务无法接受angular.callbacks.\u 1回调名称

解决方案:

var stock_hack

function stock_search(data) {
    stock_hack = data;
 }


var stock_hack

function stock_search(data) {
    stock_hack = data;
}


function jsonp_example($scope, $http) {

    $scope.doRequest = function() {
        $http({
            method: "JSONP",
            params: {
                input: "GM",
                callback: "stock_search"
            },
            url: "http://dev.markitondemand.com/Api/Lookup/jsonp",
            isArray: true
        }).success(function(data, status) {
/*
                 *Never Goes HERE !!
                 */


        }).error(function(data, status) {

/*
                 * FREAKING HACK !!!!
                 */
            console.info("goes here")
            console.info(stock_hack)

        });
    };


}​
我的小提琴

关键是您必须调用另一个javascript函数才能获得json响应


希望这个帮助

angular上的回调函数有问题,我在git中打开了一个问题

回调名称必须是JSONP_callback,在此回调中angular将把回调名称改为callback=angular.callbacks.\u 1

有些web服务无法接受angular.callbacks.\u 1回调名称

解决方案:

var stock_hack

function stock_search(data) {
    stock_hack = data;
 }


var stock_hack

function stock_search(data) {
    stock_hack = data;
}


function jsonp_example($scope, $http) {

    $scope.doRequest = function() {
        $http({
            method: "JSONP",
            params: {
                input: "GM",
                callback: "stock_search"
            },
            url: "http://dev.markitondemand.com/Api/Lookup/jsonp",
            isArray: true
        }).success(function(data, status) {
/*
                 *Never Goes HERE !!
                 */


        }).error(function(data, status) {

/*
                 * FREAKING HACK !!!!
                 */
            console.info("goes here")
            console.info(stock_hack)

        });
    };


}​
我的小提琴

关键是您必须调用另一个javascript函数才能获得json响应


希望这对我有所帮助。我想我会为这个问题添加一个真正的解决方案。这是一个有效的解决办法

这是密码

var symbol = 'NFLX';
var url = "http://dev.markitondemand.com/Api/v2/Lookup/jsonp?input="+ symbol +"&callback=JSON_CALLBACK";

$http.jsonp(url)
.success(function(data){
   console.info(data);
}).error(function(data, status) {
   console.info(data);
});
返回

//[{"Symbol":"NFLX","Name":"Netflix Inc","Exchange":"NASDAQ"}]

我想我会为这个问题添加一个真正的解决方案。这是一个有效的解决办法

这是密码

var symbol = 'NFLX';
var url = "http://dev.markitondemand.com/Api/v2/Lookup/jsonp?input="+ symbol +"&callback=JSON_CALLBACK";

$http.jsonp(url)
.success(function(data){
   console.info(data);
}).error(function(data, status) {
   console.info(data);
});
返回

//[{"Symbol":"NFLX","Name":"Netflix Inc","Exchange":"NASDAQ"}]

你试过用GET代替JSONP吗?另外,在您发布问题时,格式是否与URL的当前响应相同?是的,我也尝试了$http.get,并且格式相同…您尝试过get而不是JSONP吗?另外,在您发布问题时,格式是否与URL的当前响应相同?是的,我也尝试了$http.get,格式相同…谢谢@Todi!你说得对,显然我使用的web服务与angular的回调处理程序'callback=angular.callbacks.\u 1'不兼容。您的解决方案目前效果很好!希望这个问题很快得到解决+1我不明白为什么这个答案中的代码定义了两次stock_hack var和stock_search函数。这是一个打字错误吗?@TodiAdiatmo,正如JeffryHouser所说,我不明白为什么这个答案中的代码定义了两个stock_hack var和stock_search函数。那是打字错误吗?谢谢@Todi!你说得对,显然我使用的web服务与angular的回调处理程序'callback=angular.callbacks.\u 1'不兼容。您的解决方案目前效果很好!希望这个问题很快得到解决+1我不明白为什么这个答案中的代码定义了两次stock_hack var和stock_search函数。这是一个打字错误吗?@TodiAdiatmo,正如JeffryHouser所说,我不明白为什么这个答案中的代码定义了两个stock_hack var和stock_search函数。那是打字错误吗?