我在将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时。
答案 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。步骤强>
你已经完成了。
详细解决方案:
答案 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。 }之后的一些“逗号”无效。