2016-05-03 16 views
1

Ich habe Probleme mit POST mit einem PHP-REST-Server. file_get_contents("php://input") fügt zusätzliche Anführungszeichen hinzu. Dies verursacht json_decode(file_get_contents("php://input"),true) zu scheiternphp file_get_contents ("php: // input") zitieren quotes

heißt I Zeichenfolge JSON

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

PHP bin Entsendung:

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

kehrt Mein

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

PHP-Version ist 5.3.10

die json zu senden, ich bin derzeit mit dem WebStorm REST-Client-Tool

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

Ich habe versucht, die äußeren Zitate aus der Zeichenfolge in WebStorm zu entfernen und es würde funktionieren I.E. { "someValue" : 0, "someOtherValue" : "1"}

Ich zog in WebStorm zu debuggen, nachdem zunächst den Fehler in einem Winkel Anwendung schlägt mit Winkel ngResource

-Controller

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

Zeigen Sie den Code, der BEITRÄGE JSON String – RiggsFolly

+0

Ende gut, sollten Sie nicht mit den einzelnen Ticks ' '' werden ausgibt. Wenn Sie nicht ändern können, was es ausgegeben wird, dann 'preg_replace (" @ (^ '|' $) @ "," ", file_get_contents (" php: // Eingabe "))' – DataHerder

+1

Wie füttern Sie in den JSON? –

Antwort

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

Wenn du die erste Variante passierst; Sie sollten einen String wie PHP intelligent herausgefunden und kehrte ...

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

Wenn Sie in der Folge passieren

var jsonData = JSON.stringify(data); 

Sie Ihr Problem gelöst haben wieder kann, selbst ....

0

Stellt sich heraus, ich war die völlig falsche Frage

Meine Winkel Anwendung versagt wurde es aufgrund CORS POST ist. Ich habe die App auf localhost ausgeführt, aber den entfernten REST php Server abgefragt. Als ich die Anwendung ausführte, wurde eine Methode OPTIONS-Anfrage aufgrund von CORS gesendet. Der Server wusste nicht, wie er reagieren sollte.

Debugging in Webstorm führte künstlich den Fehler in der ursprünglichen Frage angezeigt.

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

Verwandte Themen