2016-05-03 21 views
1

PHPのRESTサーバでPOSTを使用する際に問題があります。 file_get_contents("php://input")には別途引用符が追加されています。 このphp file_get_contents( "php:// input")引用符を追加する

すなわち が、私は文字列化JSONを掲示しています失敗json_decode(file_get_contents("php://input"),true) に引き起こしている

'{"someValue":0,"someOtherValue":1}' 

PHP:

var_dump(file_get_contents("php://input")) 

戻り

string(173) "'{ "someValue" : 0, "someOtherValue" : "1"}'" 

マイPHPのバージョンは、私は現在、私はwebstorm内の文字列から外側の引用符を削除しようとしたwebstormのRESTクライアントツール

Headers: 
    Accept: */* 
Request Body: 
    Text: '{ "someValue" : 0, "someOtherValue" : "1"}' 

を使用していますし、それがうまくいく、5.3.10

はJSONを投稿することですすなわち、 { "someValue" : 0, "someOtherValue" : "1"}

は、私が最初に

angular 
    .module('app.bookings') 
    .controller('BookAPuntController', BookAPuntController); 
BookAPuntController.$inject(BookingServices); 
function BookAPuntController(BookingServices) { 
    var data = { 
     someValue:0, 
     someOtherValue:1 
    }; 
    BookingServices.save(JSON.stringify(data)); 
}; 

booking.dataservice.js

(function() { 
    'use strict'; 

    angular 
    .module('app.data') 
    .factory('BookingServices', BookingServices); 

    BookingServices.$inject = ['$resource']; 

    /* @ngInject */ 
    function BookingServices($resource) { 
    return $resource('rest/booking/:Id/:from/:to', null, { 
     'get': {method: 'GET', isArray: true}, 
    }); 
    } 

})(); 
+1

POSTSは、JSON文字列 – RiggsFolly

+0

さて、あなたは ' ''シングルティックで出力すべきではないのコードを表示します。出力内容を変更できない場合は、 'preg_replace(" @(^ '|' $)@ "、 '、file_get_contents(" php:// input "))' – DataHerder

+1

JSONをどうやって食べていますか? –

答えて

2
'{"someValue":0,"someOtherValue":1}'; // IS A STRING... 
{"someValue":0,"someOtherValue":1}; // IS NOT A STRING... 

角度ngResource

コントローラーを使用して、角度のアプリケーションのバグを打った後webstormでデバッグするために移動しました最初の変種を渡している場合。あなたはあなたが....

、自分をあなたの問題を解決しているかもしれ

var jsonData = JSON.stringify(data); 

の結果を渡すときには、PHPがスマートに考え出したと返されたような文字列...

string(173) "'{ "someValue" : 0, "someOtherValue" : "1"}'" 

を取り戻す必要があります

0

私はまったく間違った質問をしていました

私の角度のアプリケーションは、CORSのPOSTのため失敗していました。私は、ローカルホスト上でアプリケーションを実行していたが、リモートのREST PHPサーバを照会していた。アプリケーションを実行すると、OPTIONS要求がCORSのために送信されていました。サーバーは応答方法を知らなかったので、すべてが失敗しました。

Webstormでのデバッグは、元の質問に見られるエラーを人為的に導入していました。

Why am I getting an OPTIONS request instead of a GET request?

https://serverfault.com/questions/231766/returning-200-ok-in-apache-on-http-options-requests