angularjs — php file_get_contents (& quot; php: // input & quot;) добавление цитат

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

то есть
Я публикую строковый JSON

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

PHP:

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

возвращается

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

Моя версия PHP 5.3.10

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

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

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

Я перешел к отладке в веб-шторме после первоначального исправления ошибки в угловом приложении с использованием углового 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

Решение

'{"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);

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

3

Другие решения

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

Из-за CORS мое угловое приложение не работало с POST. Я запускал приложение на локальном хосте, но запрашивал удаленный PHP-сервер REST. Когда я запустил приложение, запрос метода OPTIONS отправлялся из-за CORS. Сервер не знал, как ответить, поэтому все не удалось.

отладка в webstorm искусственно привносила ошибку, замеченную в первоначальном вопросе.

Почему я получаю запрос OPTIONS вместо запроса GET?

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

0

По вопросам рекламы [email protected]