2011-11-29 1 views
1

JSON DATA를 recess 프레임 워크에 게시하는 중 문제가 있습니다. JSON 데이터는 브라우저 끝에서 완벽하게 게시되었습니다. 하지만 서버 측에서이 값을 얻으면 null이됩니다. 나는 그 이유를 모른다.Recess Framework v0.2 : Json Request가 값을 삽입하지 않습니다.

SMPLE EXT JS 코드 : 내가 CORE의 PHP를 사용하고 때

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

나는 JSON 데이터를 얻을 수 있습니다. 그러나 문제는 RECESS FRAMEWORK이있는 순간이었습니다.

답변

3

마지막으로 나는 딥 인터넷 검색 결과를 찾았습니다. Hirnhamster 덕분에 http://forums.recessframework.org/.

솔루션

솔루션입니다 - 반면에 진짜 문제를 찾는 - 오히려 쉽게 :

1 단계 :

파일을 엽니 다 DefaultPolicy.class.php 홈에서/recess/framework. 메소드 전처리 (..)로 이동하십시오. $ 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; 줄을 추가하십시오. (! $ 형식 == '') { 기능은 지금과 같이하는 경우는 아래 :

<?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). 변경 형식 : JSON은 "XML" 기능은 지금과 같이해야하는 "JSON"및 형식 : 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

보십시오 : 당신은 자바 스크립트를 작성하는

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

. 일부 "쉼표"는 유효하지 않습니다.

+0

rijuk 이봐, 당신의 제안을 주셔서 감사합니다. 그러나 이러한 변화 역시 같은 문제를 야기합니다. – Naveenkumar

+0

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