Frage

Ich habe Probleme, während ich JSON -Daten in den Rahmen des Rahmens veröffentliche. Die JSON -Daten wurden perfekt aus dem Browser -Ende veröffentlicht. Aber wenn ich das vom Server -Ende bekomme, wird es null. Ich kenne den Grund nicht.

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);
},
});

Ich kann die JSON -Daten erhalten, wenn ich Core PHP verwende. Aber das Problem war, als ich mit einem Pause -Rahmen bin.

War es hilfreich?

Lösung

Schließlich fand ich die Antwort nach dem tiefen Googling. Dank an Hirnhamster der Nutzer, http://forums.regigframework.org/.

Lösung

Die Lösung ist - im Gegensatz zum Finden des eigentlichen Problems - ziemlich einfach:

1. Schritt:

Öffnen Sie die Datei defaultPolicy.class.php in Recess/Recess/Framework. Gehen Sie zur Methodenvorverarbeitung (..). Fügen Sie die Zeile $ this-> ReparameterizeForformat ($ request) hinzu; als letzter Befehl vor der Rückkehr. Die Funktion sollte jetzt so aussehen:

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

        $this->forceFormatFromResourceString($request);

        $this->reparameterizeForFormat($request);

        return $request;
    }
?>

2. Schritt

Gehen Sie in derselben Datei zu Methode ForceFormatfromResourcestring (...). Ändern Sie die Zeile $ format = substr ($ lastPart, $ lastdotposition + 1); to $ format = strtolower (substr ($ lastPart, $ lastdotposition + 1)); Fügen Sie die Zeile $ request-> format = $ format hinzu; unten if if ($ format! == '') {Die Funktion sollte jetzt so aussehen:

<?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. Schritt

Gehen Sie in derselben Datei zu Methode ReparameterizeForFormat (...). (Seien Sie erstaunt, dass diese Funktion bereits vorhanden ist: p). Ändern Sie das Format :: JSON in "JSON" und Format :: XML in "XML". Die Funktion sollte jetzt so aussehen:

<?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. Schritt

Du bist fertig.

Für eine detaillierte Lösung:

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

Andere Tipps

Versuchen:

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

Sie schreiben JavaScript. Einige "Kommas" nach} sind nicht gültig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top