2016-05-03 6 views
1

У меня возникли проблемы с использованием POST с сервером REST php. file_get_contents("php://input") добавляет дополнительные кавычки. Это вызывает json_decode(file_get_contents("php://input"),true) на неудачуphp file_get_contents ("php: // input") Добавление котировок

т.е. Я отправляю строковой JSON

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

PHP:

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

возвращает

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

Мои PHP версии 5.3.10

Чтобы разместить JSON, я в настоящее время с помощью WebStorm REST инструмент Client

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

Я попытался удалить внешние кавычки из строки в WebStorm и он будет работать И.Е. { "someValue" : 0, "someOtherValue" : "1"}

я переехал отладки в WebStorm после первоначального удара ошибки в угловом приложении с помощью углового ngResource

контроллера

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

Показать код, ПОСТЫ-х годах 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... 

Если вы проходите первый вариант; Вы должны получить строку как PHP бойко понял, и вернулся ...

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

Когда вы передаете в результате

var jsonData = JSON.stringify(data); 

Вы, возможно, решить вашу проблему, сам ....

0

Оказывается, я задавал совершенно неправильный вопрос

Мое угловое приложение терпело неудачу с его POST из-за CORS. Я запускал приложение на localhost, но запрашивал удаленный сервер 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