Recess Framework v0.2: Json Request не вставляет значения - PullRequest
1 голос
/ 29 ноября 2011

Я столкнулся с проблемой при публикации JSON DATA для углубления фреймворка.Данные в формате JSON идеально размещены в браузере.Но когда я получаю это от конца сервера, он становится нулевым.Я не знаю причину.

SMPLE EXT JS CODE:

Ext.Ajax.request({
url : 'http://localhost:8888/index.php' ,
method: 'POST',
jsonData: { dining: {name: 'test',},},
success: function ( result, request ) {
  alert(result.responseText);
},
});

Я могу получить данные JSON, когда использую CORE PHP.Но проблема заключалась в том, что я с RECESS FRAMEWORK.

Ответы [ 2 ]

3 голосов
/ 01 декабря 2011

Наконец я нашел ответ после глубокого поиска в Google.Благодаря Hirnhamster пользователю, http://forums.recessframework.org/.

Решение

Решение, в отличие от поиска реальной проблемы, довольно простое:

1.Шаг:

Откройте файл DefaultPolicy.class.php в recess / recess / framework.Перейдите в метод preprocess (..).Добавьте строку $ this-> reparameterizeForFormat ($ request);как последняя команда перед возвращением.Теперь функция должна выглядеть следующим образом:

<?php
    public function preprocess(Request &$request) {
        $this->getHttpMethodFromPost($request);

        $this->forceFormatFromResourceString($request);

        $this->reparameterizeForFormat($request);

        return $request;
    }
?>

2.Шаг

В том же файле перейдите к методу forceFormatFromResourceString (...).Изменить строку $ format = substr ($ lastPart, $ lastDotPosition + 1);в $ format = strtolower (substr ($ lastPart, $ lastDotPosition + 1));Добавьте строку $ request-> format = $ format;ниже, если ($ format! == '') {Теперь функция должна выглядеть следующим образом:

<?php
    protected function forceFormatFromResourceString(Request &$request) {

        $lastPartIndex = count($request->resourceParts) - 1;
        if($lastPartIndex < 0) return $request;

        $lastPart = $request->resourceParts[$lastPartIndex];

        $lastDotPosition = strrpos($lastPart, Library::dotSeparator);
        if($lastDotPosition !== false) {
            $format = strtolower(substr($lastPart, $lastDotPosition + 1));
            if($format !== '') {
                $request->format = $format;
                $mime = MimeTypes::preferredMimeTypeFor($format);
                if($mime !== false) {
                    $request->accepts->forceFormat($format);
                    $request->setResource(substr($request->resource, 0, strrpos($request->resource, Library::dotSeparator)));
                }
            }
        }

        return $request;
    }
?>

3.Шаг

В том же файле перейдите к методу reparameterizeForFormat (...).(Удивитесь, что эта функция уже существует: P).Измените Format :: JSON на «json» и Format :: XML на «xml» Теперь функция должна выглядеть следующим образом:

<?php
    protected function reparameterizeForFormat(Request &$request) {

        if($request->format == "json") {
            $method = strtolower($request->method);
            $request->$method = json_decode($request->input, true);
        } else if ($request->format == "xml") {
            // TODO: XML reparameterization in request transformer
        }
        return $request;
    }
?>

4.Шаг

Готово.

Для подробного решения :

http://webcache.googleusercontent.com/search?q=cache:http://forums.recessframework.org/topic/189-json-request-doesnt-insert-values-in-v02/

0 голосов
/ 29 ноября 2011

Попробуйте:

Ext.Ajax.request({
    url : 'http://localhost:8888/index.php' ,
    method: 'POST',
    jsonData: { dining: {name: 'test'} },
    success: function( result, request ) {
        alert(result.responseText);
    }
});

Вы пишете Javascript. Некоторые запятые после} недействительны.

...