Вопрос

Я пытаюсь отправить данные на сайт cakephp (mvc) через $.post().ниже приведен код

$('#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");
})

Ниже приведены данные cakephp, которые извлекают данные и сохраняют их.Если вы знаете торт, отлично, а если нет, то ничего страшного.Я действительно пытаюсь понять, правильно ли я отправляю данные.

<?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';
            }   
        }
    }
?>

Как вы можете видеть, я поставил «привет» перед тем, как он выполнит какую-либо оценку.Я должен был видеть это в своей консоли, но я этого не делаю.Я попробовал этот метод с помощью get и увидел ответ «привет».Это приводит меня к выводу, что вы не можете отправлять данные CROSS-домена через $.post.Единственный метод, который, кажется, работает, это getJSON() если только кто-то не сможет доказать мою неправоту.

Это было полезно?

Решение

Вы не можете выполнять обычные междоменные запросы ajax.Вам нужно использовать JSONP и это работает только с запросами GET (это потому, что jquery вводит script тег в DOM для выполнения запроса и script тег может использовать только GET для получения javascript).

Другие советы

Если вы хотите иметь возможность выполнять междоменные запросы, вам необходимо реализовать HTTP-прокси в вашем домене, который будет выполнять HTTP-запросы от вашего имени через серверную утилиту/библиотеку, такую ​​​​как Curl или Apache. HTTPклиент или что-то.

Редактировать: JSONP — это решение, но я бы не рекомендовал его, если вам не нужно только выполнять запросы GET (потому что это все, что работает).JSONP также не обязательно совместим с REST, особенно в вашем случае, когда вам нужно сделать запрос POST.Если POST удовлетворяет семантике вашего ресурса и тому, как вы собираетесь им манипулировать, переход на GET только для использования JSONP кажется мне уродливым.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top