Frage

Ich versuche, Daten über zu einem cakephp (MVC) Website zu senden, über $ .post (). unten ist der Code

$('#testReq').click(function () {
    console.log('Button Works');
    $.post('http://play.anthonylgordon.com/usersessions/store/', { data: 'test7' }, function (data) {
        //data contains the json object retrieved.
        console.log(data.status);
    }, "json");
})

Im Folgenden finden Sie die cakephp Daten, die die Daten und speichert sie abruft. Wenn Sie wissen, Kuchen, großartig, aber wenn nicht, es ist in Ordnung. Ich versuche wirklich, um herauszufinden, ob ich die Daten richtig schicke

<?php
    class UsersessionsController extends AppController {
        var $name = 'Usersessions';
        var $helpers = array('Html', 'Form','Ajax');
        var $components = array('RequestHandler');


        function store()
        {
           Configure::write('debug', 0);
           $this->autoRender = false;
           echo 'hello';
            if ($this->params['url']['data'])
            {
                $this->data['Usersession']['data'] = $this->params['url']['data'];
                $this->Usersession->Save($this->data);
                echo 'Success';
            }   
        }
    }
?>

Wie Sie sehen, ich ‚Hallo‘ setzen, bevor es jede Auswertung ist. Ich soll zu sehen, dass in meiner Konsole fähig sein, aber ich nicht. Ich habe versucht, diese Methode mit dem bekommen, und ich habe die Antwort sehen ‚hallo‘. Welche wird mich zu dem Schluss verlassen, dass Sie keine Daten CROSS-Domain über $.post schicken. Die einzige Methode, die zu funktionieren scheint ist getJSON() es sei denn, jemand beweisen kann mich nicht falsch.

War es hilfreich?

Lösung

Sie können keine normalen Cross-Domain-AJAX-Anfragen ausführen. Sie müssen verwenden JSONP und das funktioniert nur mit GET-Anforderungen (das ist, weil jquery ein spritzt script-Tag auf das DOM, um die Anfrage und einen script Tag auszuführen nur Javascript holen verwenden GET).

Andere Tipps

Wenn Sie in der Lage sein wollen Anfragen Cross-Domain zu tun, müssen Sie einen HTTP-Proxy auf Ihrer Domain implementieren, die HTTP-Anforderungen in Ihrem Namen über eine Server-Seite Utility / Bibliothek wie Locken oder Apache Httpclient oder so etwas.

Bearbeiten: JSONP ist eine Lösung, aber ich würde es nicht empfehlen, wenn Sie nur GET-Anfragen müssen machen (denn das ist alles, das funktioniert). JSONP ist auch nicht unbedingt REST-freundlich, vor allem in Ihrem Fall, in dem Sie eine POST-Anforderung vornehmen müssen. Wenn POST die Semantik Ihrer Ressource erfüllt und wie Sie beabsichtigen, sie zu manipulieren, Schalten, nur um zu verwenden JSONP fühlt sich hässlich zu mir.

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