Recess Framework v0.2:Json Request不插入值

时间:2011-11-29 10:31:47

标签: php json post frameworks recess

我在将JSON DATA发布到休息框架时遇到了麻烦。从浏览器端发布的JSON数据非常完美。但是当我从服务器端获得它时,它变为空。我不知道原因。

SMPLE EXT JS代码:

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

我在使用CORE PHP时可以获取JSON数据。但问题出在我和RECESS FRAMEWORK时。

2 个答案:

答案 0 :(得分:3)

最后,我在深度谷歌搜索后找到了答案。感谢 Hirnhamster 用户http://forums.recessframework.org/

<强>解决方案

解决方案是 - 与找到真正的问题相比 - 相当简单:

<强> 1。步骤:

在凹进/凹进/框架中打开文件DefaultPolicy.class.php。 转到方法预处理(..)。 添加行$ this-&gt; 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); to $ format = strtolower(substr($ lastPart,$ lastDotPosition + 1)); 添加$ request-&gt;格式= $格式; if if($ 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/

答案 1 :(得分:0)

尝试:

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

您正在编写Javascript。 }之后的一些“逗号”无效。