2017-02-14 7 views
0

GoogleのAPIエンドポイントに投稿するために角度と組み込みの$ http指示を使用しています。 Chromeで動作しますが、Safariで問題が発生しています。ここに私のAPIの工場からの呼び出しです:Safariの角度付きHttp PostgreSQLと異なるURLを打つ

assignments: function(csv) { 
 
    var deferred = $q.defer(); 
 
    $http({ 
 
    method: 'POST', 
 
    url: '/api/numbers/assignments', 
 
    data: $.param({ 
 
     skipBillables: false, 
 
     assignments: csv, 
 
    }), 
 
    headers: { 
 
     'Content-Type': 'application/x-www-form-urlencoded' 
 
    } 
 
    }).success(function(data) { 
 
    deferred.resolve(data); 
 
    }).error(function(data) { 
 
    deferred.reject(data); 
 
    }) 
 
    return deferred.promise; 
 
},

を今私のコントローラは、私が作成したApi.assignmentsを消費します。

Api.updateSubscription(org.id, cardData).then(function(data) { 
 
    
 
    Api.getSession().then(function(data) { 
 
     
 
    if (!_($scope.savedTollFreeNumberCheckout).isBlank()) { 
 

 
     var checkouttollfreenumber = '1' + $scope.savedTollFreeNumberCheckout.tfn; 
 
     var assignObj = [{ 
 
     phoneNum: checkouttollfreenumber, 
 
     email: owner.emailAddress, 
 
     percent: 0, 
 
     }]; 
 
     var csvFile = downloadCSV(assignObj); 
 
     console.log(csvFile); 
 
     Api.assignments(csvFile).then(function(data) { 
 
     $window.location.reload(); 
 
     }); 
 

 
    }; 
 
    }); 
 
});

私はこれを呼び出すと、それはChromeで動作します。ここでは、以下の抜粋です。それが動作していない唯一のブラウザはSafariです。 Safariでは、呼び出される完全なURLはhttp://local.appname.com:9000/18775078169,[email protected],percentageparameterですが、これは正しいエンドポイントではありません。 Chromeでそれは打撃しているhttp://local.appname.com:9000/api/numbers/assignments誰かが修正に関する提案をしているなら、私は本当に助けに感謝します。

答えて

-1

ポストリクエストでjsonオブジェクトとしてデータを送信する予定がある場合、$ .paramsを持つ必要があるとは思われません。

$ .paramは、主にクエリパラメータのパラメータをシリアル化することです。

assignments: function(csv) { 
     var deferred = $q.defer(); 
     $http({ 
     method: 'POST', 
     url: '/api/numbers/assignments', 
     data: { 
      skipBillables: false, 
      assignments: csv, 
     }, 
     headers: { 
     'Content-Type': 'application/json' 
     } 
     }).success(function(data) { 
     deferred.resolve(data); 
     }).error(function(data) { 
     deferred.reject(data); 
     }) 
     return deferred.promise; 
    }, 

あなたはこれを行う必要があるか、あなたが本当に

assignments: function(csv) { 
     var deferred = $q.defer(); 
     $http({ 
     method: 'POST', 
     url: '/api/numbers/assignments'+'?'+$.params({ skipBillables: false,assignments: csv}), 
     headers: { 
     'Content-Type': 'application/x-www-form-urlencoded' 
     } 
     }).success(function(data) { 
     deferred.resolve(data); 
     }).error(function(data) { 
     deferred.reject(data); 
     }) 
     return deferred.promise; 
    }, 

しかし、要求を取得したデータに

を送信するなど良い練習queryparamsとしてデータを送信したい場合は - クエリのparams

を使用します投稿のリクエスト - jsonを使用

+0

最後のものがPOSTをGETに変更していて、間違っています – charlietfl

+0

また、データが 'x-www-form-urlencoded'として送信されることが期待される場合は、$ .paramがPOSTに使用されます。 – charlietfl

+0

投稿がChromeで動作するように見えますが、サファリではないようです。ヘルプをよろしくお願いいたします。 –

関連する問題