1

正常に機能していたjquery$.ajaxから、AngularJS$http.putを使用してRESTfulAPIにアクセスするように切り替えています。

API呼び出しを行うことはできますが、PUTデータが送信されません-そのため、私のAPIは、JSON文字列を含む必要がある空のデータオブジェクトを含むPUTリクエストを認識します->data.values = 'a json structure'

$http.put(
    $rootScope.api_url,
        {
            values: jsonifiedValues
        },
        {
        headers: {
            apihash: sha256hash
        }
    }).success(function(data,status,headers,config){
        // handle success
}).error(function(data,status,headers,config) {
        // handle failure
});

以前にAngularJSの$httpを使用したことはありませんが、PHP APIでデータをダンプすると、空になります。これは私がPHPのリクエストからそれを引き出す方法です:

parse_str(file_get_contents('php://input'), $put_vars);  
$arr_req_data = $put_vars['values'];    

私のAPIでは、リクエストから送信されたapihashがPUT値に基づいて構築されたsha256ハッシュと一致しない場合、失敗します。

これはJQueryで機能していますが、$httpに切り替えただけで失敗します。PUTデータが空のように見える理由がわかりません。

4

1 に答える 1

1

からの戻り値file_get_contents('php://input')は JSON 文字列 (すべてが送信された場合) になるため、parse_strそのデータを処理する適切な関数ではありません。
代わりに を使用しますjson_decode

また、 json化された値を送信する必要はありません。2回使用する必要があるため、物事がより複雑になりますjson_decode

于 2013-02-15T14:27:49.783 に答える